From c4c3818c396dc57e1422356f3bb865d99c0c27e8 Mon Sep 17 00:00:00 2001 From: Ali Cheraghi Date: Sun, 13 Sep 2026 16:40:44 +0330 Subject: [PATCH] gen_spirv_spec: shrink output --- src/codegen/spirv/extinst.zig.grammar.json | 11 - src/codegen/spirv/spec.zig | 15037 ++----------------- src/link/Spirv/Flush.zig | 1 + tools/gen_spirv_spec.zig | 528 +- 4 files changed, 1539 insertions(+), 14038 deletions(-) delete mode 100644 src/codegen/spirv/extinst.zig.grammar.json diff --git a/src/codegen/spirv/extinst.zig.grammar.json b/src/codegen/spirv/extinst.zig.grammar.json deleted file mode 100644 index ea8c5f7729ea87446fe64b7981500d07f4959c55..0000000000000000000000000000000000000000 --- a/src/codegen/spirv/extinst.zig.grammar.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": 0, - "revision": 0, - "instructions": [ - { - "opname": "InvocationGlobal", - "opcode": 0, - "operands": [{ "kind": "IdRef", "name": "initializer function" }] - } - ] -} diff --git a/src/codegen/spirv/spec.zig b/src/codegen/spirv/spec.zig index 8f2733a92e6c169325d7e41ef0a166b21b46bee2..b45e3a2e73ec2809c9de1027b0d98c2bb56eeb30 100644 --- a/src/codegen/spirv/spec.zig +++ b/src/codegen/spirv/spec.zig @@ -1,31 +1,39 @@ //! This file is auto-generated by tools/gen_spirv_spec.zig. - const std = @import("std"); +pub const Word = u32; pub const Version = packed struct(Word) { padding: u8 = 0, minor: u8, major: u8, padding0: u8 = 0, - - pub fn toWord(self: @This()) Word { - return @bitCast(self); - } }; - -pub const Word = u32; +pub const Generator = packed struct(Word) { + version: u16, + tool: u16, +}; +pub const Header = extern struct { + magic: Word, + version: Version, + generator: Generator, + id_bound: Word, + schema: Word, +}; +pub const InstructionHeader = packed struct(Word) { + opcode: Opcode, + word_count: u16, +}; pub const Id = enum(Word) { none, _, - pub fn format(self: Id, writer: *std.Io.Writer) std.Io.Writer.Error!void { - switch (self) { + pub fn format(id: Id, writer: *std.Io.Writer) std.Io.Writer.Error!void { + switch (id) { .none => try writer.writeAll("(none)"), - else => try writer.print("%{d}", .{@backingInt(self)}), + else => try writer.print("%{d}", .{@backingInt(id)}), } } }; - pub const IdRange = struct { base: u32, len: u32, @@ -37,7 +45,6 @@ pub const IdRange = struct { }; pub const LiteralInteger = Word; -pub const LiteralFloat = Word; pub const LiteralString = []const u8; pub const LiteralContextDependentNumber = union(enum) { int32: i32, @@ -61,7 +68,7 @@ pub const Quantifier = enum { pub const Operand = struct { kind: OperandKind, - quantifier: Quantifier, + quantifier: Quantifier = .required, }; pub const OperandCategory = enum { @@ -75,16 +82,10 @@ pub const OperandCategory = enum { pub const Enumerant = struct { name: []const u8, value: Word, - parameters: []const OperandKind, + parameters: []const Operand, }; -pub const Instruction = struct { - name: []const u8, - opcode: Word, - operands: []const Operand, -}; - -pub const zig_generator_id: Word = 41; +pub const zig_generator_id: u16 = 41; pub const version: Version = .{ .major = 1, .minor = 6, .patch = 4 }; pub const magic_number: Word = 0x07230203; @@ -113,8 +114,6 @@ pub const Class = enum { pipe, device_side_enqueue, non_uniform, - tensor, - graph, reserved, }; @@ -192,8 +191,8 @@ pub const OperandKind = enum { pair_id_ref_id_ref, tensor_operands, - pub fn category(self: OperandKind) OperandCategory { - return switch (self) { + pub fn category(operand_kind: OperandKind) OperandCategory { + return switch (operand_kind) { .opcode => .literal, .image_operands => .bit_enum, .fp_fast_math_mode => .bit_enum, @@ -268,26 +267,26 @@ pub const OperandKind = enum { .tensor_operands => .bit_enum, }; } - pub fn enumerants(self: OperandKind) []const Enumerant { - return switch (self) { + pub fn enumerants(operand_kind: OperandKind) []const Enumerant { + return switch (operand_kind) { .opcode => unreachable, .image_operands => &.{ - .{ .name = "Bias", .value = 0x0001, .parameters = &.{.id_ref} }, - .{ .name = "Lod", .value = 0x0002, .parameters = &.{.id_ref} }, - .{ .name = "Grad", .value = 0x0004, .parameters = &.{ .id_ref, .id_ref } }, - .{ .name = "ConstOffset", .value = 0x0008, .parameters = &.{.id_ref} }, - .{ .name = "Offset", .value = 0x0010, .parameters = &.{.id_ref} }, - .{ .name = "ConstOffsets", .value = 0x0020, .parameters = &.{.id_ref} }, - .{ .name = "Sample", .value = 0x0040, .parameters = &.{.id_ref} }, - .{ .name = "MinLod", .value = 0x0080, .parameters = &.{.id_ref} }, - .{ .name = "MakeTexelAvailable", .value = 0x0100, .parameters = &.{.id_scope} }, - .{ .name = "MakeTexelVisible", .value = 0x0200, .parameters = &.{.id_scope} }, + .{ .name = "Bias", .value = 0x0001, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "Lod", .value = 0x0002, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "Grad", .value = 0x0004, .parameters = &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } } }, + .{ .name = "ConstOffset", .value = 0x0008, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "Offset", .value = 0x0010, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "ConstOffsets", .value = 0x0020, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "Sample", .value = 0x0040, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "MinLod", .value = 0x0080, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "MakeTexelAvailable", .value = 0x0100, .parameters = &.{.{ .kind = .id_scope }} }, + .{ .name = "MakeTexelVisible", .value = 0x0200, .parameters = &.{.{ .kind = .id_scope }} }, .{ .name = "NonPrivateTexel", .value = 0x0400, .parameters = &.{} }, .{ .name = "VolatileTexel", .value = 0x0800, .parameters = &.{} }, .{ .name = "SignExtend", .value = 0x1000, .parameters = &.{} }, .{ .name = "ZeroExtend", .value = 0x2000, .parameters = &.{} }, .{ .name = "Nontemporal", .value = 0x4000, .parameters = &.{} }, - .{ .name = "Offsets", .value = 0x10000, .parameters = &.{.id_ref} }, + .{ .name = "Offsets", .value = 0x10000, .parameters = &.{.{ .kind = .id_ref }} }, }, .fp_fast_math_mode => &.{ .{ .name = "NotNaN", .value = 0x0001, .parameters = &.{} }, @@ -307,22 +306,12 @@ pub const OperandKind = enum { .{ .name = "Unroll", .value = 0x0001, .parameters = &.{} }, .{ .name = "DontUnroll", .value = 0x0002, .parameters = &.{} }, .{ .name = "DependencyInfinite", .value = 0x0004, .parameters = &.{} }, - .{ .name = "DependencyLength", .value = 0x0008, .parameters = &.{.literal_integer} }, - .{ .name = "MinIterations", .value = 0x0010, .parameters = &.{.literal_integer} }, - .{ .name = "MaxIterations", .value = 0x0020, .parameters = &.{.literal_integer} }, - .{ .name = "IterationMultiple", .value = 0x0040, .parameters = &.{.literal_integer} }, - .{ .name = "PeelCount", .value = 0x0080, .parameters = &.{.literal_integer} }, - .{ .name = "PartialCount", .value = 0x0100, .parameters = &.{.literal_integer} }, - .{ .name = "InitiationIntervalALTERA", .value = 0x10000, .parameters = &.{.literal_integer} }, - .{ .name = "MaxConcurrencyALTERA", .value = 0x20000, .parameters = &.{.literal_integer} }, - .{ .name = "DependencyArrayALTERA", .value = 0x40000, .parameters = &.{.literal_integer} }, - .{ .name = "PipelineEnableALTERA", .value = 0x80000, .parameters = &.{.literal_integer} }, - .{ .name = "LoopCoalesceALTERA", .value = 0x100000, .parameters = &.{.literal_integer} }, - .{ .name = "MaxInterleavingALTERA", .value = 0x200000, .parameters = &.{.literal_integer} }, - .{ .name = "SpeculatedIterationsALTERA", .value = 0x400000, .parameters = &.{.literal_integer} }, - .{ .name = "NoFusionALTERA", .value = 0x800000, .parameters = &.{} }, - .{ .name = "LoopCountALTERA", .value = 0x1000000, .parameters = &.{.literal_integer} }, - .{ .name = "MaxReinvocationDelayALTERA", .value = 0x2000000, .parameters = &.{.literal_integer} }, + .{ .name = "DependencyLength", .value = 0x0008, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "MinIterations", .value = 0x0010, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "MaxIterations", .value = 0x0020, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "IterationMultiple", .value = 0x0040, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "PeelCount", .value = 0x0080, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "PartialCount", .value = 0x0100, .parameters = &.{.{ .kind = .literal_integer }} }, }, .function_control => &.{ .{ .name = "Inline", .value = 0x0001, .parameters = &.{} }, @@ -350,13 +339,11 @@ pub const OperandKind = enum { }, .memory_access => &.{ .{ .name = "Volatile", .value = 0x0001, .parameters = &.{} }, - .{ .name = "Aligned", .value = 0x0002, .parameters = &.{.literal_integer} }, + .{ .name = "Aligned", .value = 0x0002, .parameters = &.{.{ .kind = .literal_integer }} }, .{ .name = "Nontemporal", .value = 0x0004, .parameters = &.{} }, - .{ .name = "MakePointerAvailable", .value = 0x0008, .parameters = &.{.id_scope} }, - .{ .name = "MakePointerVisible", .value = 0x0010, .parameters = &.{.id_scope} }, + .{ .name = "MakePointerAvailable", .value = 0x0008, .parameters = &.{.{ .kind = .id_scope }} }, + .{ .name = "MakePointerVisible", .value = 0x0010, .parameters = &.{.{ .kind = .id_scope }} }, .{ .name = "NonPrivatePointer", .value = 0x0020, .parameters = &.{} }, - .{ .name = "AliasScopeINTELMask", .value = 0x10000, .parameters = &.{.id_ref} }, - .{ .name = "NoAliasINTELMask", .value = 0x20000, .parameters = &.{.id_ref} }, }, .kernel_profiling_info => &.{ .{ .name = "CmdExecTime", .value = 0x0001, .parameters = &.{} }, @@ -381,10 +368,7 @@ pub const OperandKind = enum { .{ .name = "Horizontal2Pixels", .value = 0x0004, .parameters = &.{} }, .{ .name = "Horizontal4Pixels", .value = 0x0008, .parameters = &.{} }, }, - .raw_access_chain_operands => &.{ - .{ .name = "RobustnessPerComponentNV", .value = 0x0001, .parameters = &.{} }, - .{ .name = "RobustnessPerElementNV", .value = 0x0002, .parameters = &.{} }, - }, + .raw_access_chain_operands => &.{}, .source_language => &.{ .{ .name = "Unknown", .value = 0, .parameters = &.{} }, .{ .name = "ESSL", .value = 1, .parameters = &.{} }, @@ -409,8 +393,6 @@ pub const OperandKind = enum { .{ .name = "Fragment", .value = 4, .parameters = &.{} }, .{ .name = "GLCompute", .value = 5, .parameters = &.{} }, .{ .name = "Kernel", .value = 6, .parameters = &.{} }, - .{ .name = "TaskNV", .value = 5267, .parameters = &.{} }, - .{ .name = "MeshNV", .value = 5268, .parameters = &.{} }, .{ .name = "RayGenerationKHR", .value = 5313, .parameters = &.{} }, .{ .name = "IntersectionKHR", .value = 5314, .parameters = &.{} }, .{ .name = "AnyHitKHR", .value = 5315, .parameters = &.{} }, @@ -433,7 +415,7 @@ pub const OperandKind = enum { .{ .name = "Vulkan", .value = 3, .parameters = &.{} }, }, .execution_mode => &.{ - .{ .name = "Invocations", .value = 0, .parameters = &.{.literal_integer} }, + .{ .name = "Invocations", .value = 0, .parameters = &.{.{ .kind = .literal_integer }} }, .{ .name = "SpacingEqual", .value = 1, .parameters = &.{} }, .{ .name = "SpacingFractionalEven", .value = 2, .parameters = &.{} }, .{ .name = "SpacingFractionalOdd", .value = 3, .parameters = &.{} }, @@ -449,8 +431,8 @@ pub const OperandKind = enum { .{ .name = "DepthGreater", .value = 14, .parameters = &.{} }, .{ .name = "DepthLess", .value = 15, .parameters = &.{} }, .{ .name = "DepthUnchanged", .value = 16, .parameters = &.{} }, - .{ .name = "LocalSize", .value = 17, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } }, - .{ .name = "LocalSizeHint", .value = 18, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } }, + .{ .name = "LocalSize", .value = 17, .parameters = &.{ .{ .kind = .literal_integer }, .{ .kind = .literal_integer }, .{ .kind = .literal_integer } } }, + .{ .name = "LocalSizeHint", .value = 18, .parameters = &.{ .{ .kind = .literal_integer }, .{ .kind = .literal_integer }, .{ .kind = .literal_integer } } }, .{ .name = "InputPoints", .value = 19, .parameters = &.{} }, .{ .name = "InputLines", .value = 20, .parameters = &.{} }, .{ .name = "InputLinesAdjacency", .value = 21, .parameters = &.{} }, @@ -458,39 +440,30 @@ pub const OperandKind = enum { .{ .name = "InputTrianglesAdjacency", .value = 23, .parameters = &.{} }, .{ .name = "Quads", .value = 24, .parameters = &.{} }, .{ .name = "Isolines", .value = 25, .parameters = &.{} }, - .{ .name = "OutputVertices", .value = 26, .parameters = &.{.literal_integer} }, + .{ .name = "OutputVertices", .value = 26, .parameters = &.{.{ .kind = .literal_integer }} }, .{ .name = "OutputPoints", .value = 27, .parameters = &.{} }, .{ .name = "OutputLineStrip", .value = 28, .parameters = &.{} }, .{ .name = "OutputTriangleStrip", .value = 29, .parameters = &.{} }, - .{ .name = "VecTypeHint", .value = 30, .parameters = &.{.literal_integer} }, + .{ .name = "VecTypeHint", .value = 30, .parameters = &.{.{ .kind = .literal_integer }} }, .{ .name = "ContractionOff", .value = 31, .parameters = &.{} }, .{ .name = "Initializer", .value = 33, .parameters = &.{} }, .{ .name = "Finalizer", .value = 34, .parameters = &.{} }, - .{ .name = "SubgroupSize", .value = 35, .parameters = &.{.literal_integer} }, - .{ .name = "SubgroupsPerWorkgroup", .value = 36, .parameters = &.{.literal_integer} }, - .{ .name = "SubgroupsPerWorkgroupId", .value = 37, .parameters = &.{.id_ref} }, - .{ .name = "LocalSizeId", .value = 38, .parameters = &.{ .id_ref, .id_ref, .id_ref } }, - .{ .name = "LocalSizeHintId", .value = 39, .parameters = &.{ .id_ref, .id_ref, .id_ref } }, + .{ .name = "SubgroupSize", .value = 35, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "SubgroupsPerWorkgroup", .value = 36, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "SubgroupsPerWorkgroupId", .value = 37, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "LocalSizeId", .value = 38, .parameters = &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } } }, + .{ .name = "LocalSizeHintId", .value = 39, .parameters = &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } } }, .{ .name = "NonCoherentColorAttachmentReadEXT", .value = 4169, .parameters = &.{} }, .{ .name = "NonCoherentDepthAttachmentReadEXT", .value = 4170, .parameters = &.{} }, .{ .name = "NonCoherentStencilAttachmentReadEXT", .value = 4171, .parameters = &.{} }, .{ .name = "SubgroupUniformControlFlowKHR", .value = 4421, .parameters = &.{} }, .{ .name = "PostDepthCoverage", .value = 4446, .parameters = &.{} }, - .{ .name = "DenormPreserve", .value = 4459, .parameters = &.{.literal_integer} }, - .{ .name = "DenormFlushToZero", .value = 4460, .parameters = &.{.literal_integer} }, - .{ .name = "SignedZeroInfNanPreserve", .value = 4461, .parameters = &.{.literal_integer} }, - .{ .name = "RoundingModeRTE", .value = 4462, .parameters = &.{.literal_integer} }, - .{ .name = "RoundingModeRTZ", .value = 4463, .parameters = &.{.literal_integer} }, - .{ .name = "NonCoherentTileAttachmentReadQCOM", .value = 4489, .parameters = &.{} }, - .{ .name = "TileShadingRateQCOM", .value = 4490, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } }, - .{ .name = "EarlyAndLateFragmentTestsAMD", .value = 5017, .parameters = &.{} }, + .{ .name = "DenormPreserve", .value = 4459, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "DenormFlushToZero", .value = 4460, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "SignedZeroInfNanPreserve", .value = 4461, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "RoundingModeRTE", .value = 4462, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "RoundingModeRTZ", .value = 4463, .parameters = &.{.{ .kind = .literal_integer }} }, .{ .name = "StencilRefReplacingEXT", .value = 5027, .parameters = &.{} }, - .{ .name = "CoalescingAMDX", .value = 5069, .parameters = &.{} }, - .{ .name = "IsApiEntryAMDX", .value = 5070, .parameters = &.{.id_ref} }, - .{ .name = "MaxNodeRecursionAMDX", .value = 5071, .parameters = &.{.id_ref} }, - .{ .name = "StaticNumWorkgroupsAMDX", .value = 5072, .parameters = &.{ .id_ref, .id_ref, .id_ref } }, - .{ .name = "ShaderIndexAMDX", .value = 5073, .parameters = &.{.id_ref} }, - .{ .name = "MaxNumWorkgroupsAMDX", .value = 5077, .parameters = &.{ .id_ref, .id_ref, .id_ref } }, .{ .name = "StencilRefUnchangedFrontAMD", .value = 5079, .parameters = &.{} }, .{ .name = "StencilRefGreaterFrontAMD", .value = 5080, .parameters = &.{} }, .{ .name = "StencilRefLessFrontAMD", .value = 5081, .parameters = &.{} }, @@ -499,10 +472,9 @@ pub const OperandKind = enum { .{ .name = "StencilRefLessBackAMD", .value = 5084, .parameters = &.{} }, .{ .name = "QuadDerivativesKHR", .value = 5088, .parameters = &.{} }, .{ .name = "RequireFullQuadsKHR", .value = 5089, .parameters = &.{} }, - .{ .name = "SharesInputWithAMDX", .value = 5102, .parameters = &.{ .id_ref, .id_ref } }, .{ .name = "ArithmeticPoisonKHR", .value = 5157, .parameters = &.{} }, .{ .name = "OutputLinesEXT", .value = 5269, .parameters = &.{} }, - .{ .name = "OutputPrimitivesEXT", .value = 5270, .parameters = &.{.literal_integer} }, + .{ .name = "OutputPrimitivesEXT", .value = 5270, .parameters = &.{.{ .kind = .literal_integer }} }, .{ .name = "DerivativeGroupQuadsKHR", .value = 5289, .parameters = &.{} }, .{ .name = "DerivativeGroupLinearKHR", .value = 5290, .parameters = &.{} }, .{ .name = "OutputTrianglesEXT", .value = 5298, .parameters = &.{} }, @@ -513,24 +485,8 @@ pub const OperandKind = enum { .{ .name = "ShadingRateInterlockOrderedEXT", .value = 5370, .parameters = &.{} }, .{ .name = "ShadingRateInterlockUnorderedEXT", .value = 5371, .parameters = &.{} }, .{ .name = "Shader64BitIndexingEXT", .value = 5427, .parameters = &.{} }, - .{ .name = "SharedLocalMemorySizeINTEL", .value = 5618, .parameters = &.{.literal_integer} }, - .{ .name = "RoundingModeRTPINTEL", .value = 5620, .parameters = &.{.literal_integer} }, - .{ .name = "RoundingModeRTNINTEL", .value = 5621, .parameters = &.{.literal_integer} }, - .{ .name = "FloatingPointModeALTINTEL", .value = 5622, .parameters = &.{.literal_integer} }, - .{ .name = "FloatingPointModeIEEEINTEL", .value = 5623, .parameters = &.{.literal_integer} }, - .{ .name = "MaxWorkgroupSizeINTEL", .value = 5893, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } }, - .{ .name = "MaxWorkDimINTEL", .value = 5894, .parameters = &.{.literal_integer} }, - .{ .name = "NoGlobalOffsetINTEL", .value = 5895, .parameters = &.{} }, - .{ .name = "NumSIMDWorkitemsINTEL", .value = 5896, .parameters = &.{.literal_integer} }, - .{ .name = "SchedulerTargetFmaxMhzINTEL", .value = 5903, .parameters = &.{.literal_integer} }, .{ .name = "MaximallyReconvergesKHR", .value = 6023, .parameters = &.{} }, - .{ .name = "FPFastMathDefault", .value = 6028, .parameters = &.{ .id_ref, .id_ref } }, - .{ .name = "StreamingInterfaceINTEL", .value = 6154, .parameters = &.{.literal_integer} }, - .{ .name = "RegisterMapInterfaceINTEL", .value = 6160, .parameters = &.{.literal_integer} }, - .{ .name = "NamedBarrierCountINTEL", .value = 6417, .parameters = &.{.literal_integer} }, - .{ .name = "MaximumRegistersINTEL", .value = 6461, .parameters = &.{.literal_integer} }, - .{ .name = "MaximumRegistersIdINTEL", .value = 6462, .parameters = &.{.id_ref} }, - .{ .name = "NamedMaximumRegistersINTEL", .value = 6463, .parameters = &.{.named_maximum_number_of_registers} }, + .{ .name = "FPFastMathDefault", .value = 6028, .parameters = &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } } }, }, .storage_class => &.{ .{ .name = "UniformConstant", .value = 0, .parameters = &.{} }, @@ -547,8 +503,6 @@ pub const OperandKind = enum { .{ .name = "Image", .value = 11, .parameters = &.{} }, .{ .name = "StorageBuffer", .value = 12, .parameters = &.{} }, .{ .name = "TileImageEXT", .value = 4172, .parameters = &.{} }, - .{ .name = "TileAttachmentQCOM", .value = 4491, .parameters = &.{} }, - .{ .name = "NodePayloadAMDX", .value = 5068, .parameters = &.{} }, .{ .name = "CallableDataKHR", .value = 5328, .parameters = &.{} }, .{ .name = "IncomingCallableDataKHR", .value = 5329, .parameters = &.{} }, .{ .name = "RayPayloadKHR", .value = 5338, .parameters = &.{} }, @@ -556,12 +510,8 @@ pub const OperandKind = enum { .{ .name = "IncomingRayPayloadKHR", .value = 5342, .parameters = &.{} }, .{ .name = "ShaderRecordBufferKHR", .value = 5343, .parameters = &.{} }, .{ .name = "PhysicalStorageBuffer", .value = 5349, .parameters = &.{} }, - .{ .name = "HitObjectAttributeNV", .value = 5385, .parameters = &.{} }, .{ .name = "TaskPayloadWorkgroupEXT", .value = 5402, .parameters = &.{} }, .{ .name = "HitObjectAttributeEXT", .value = 5411, .parameters = &.{} }, - .{ .name = "CodeSectionINTEL", .value = 5605, .parameters = &.{} }, - .{ .name = "DeviceOnlyALTERA", .value = 5936, .parameters = &.{} }, - .{ .name = "HostOnlyALTERA", .value = 5937, .parameters = &.{} }, }, .dim => &.{ .{ .name = "1D", .value = 0, .parameters = &.{} }, @@ -684,30 +634,10 @@ pub const OperandKind = enum { .{ .name = "RTP", .value = 2, .parameters = &.{} }, .{ .name = "RTN", .value = 3, .parameters = &.{} }, }, - .fp_denorm_mode => &.{ - .{ .name = "Preserve", .value = 0, .parameters = &.{} }, - .{ .name = "FlushToZero", .value = 1, .parameters = &.{} }, - }, - .quantization_modes => &.{ - .{ .name = "TRN", .value = 0, .parameters = &.{} }, - .{ .name = "TRN_ZERO", .value = 1, .parameters = &.{} }, - .{ .name = "RND", .value = 2, .parameters = &.{} }, - .{ .name = "RND_ZERO", .value = 3, .parameters = &.{} }, - .{ .name = "RND_INF", .value = 4, .parameters = &.{} }, - .{ .name = "RND_MIN_INF", .value = 5, .parameters = &.{} }, - .{ .name = "RND_CONV", .value = 6, .parameters = &.{} }, - .{ .name = "RND_CONV_ODD", .value = 7, .parameters = &.{} }, - }, - .fp_operation_mode => &.{ - .{ .name = "IEEE", .value = 0, .parameters = &.{} }, - .{ .name = "ALT", .value = 1, .parameters = &.{} }, - }, - .overflow_modes => &.{ - .{ .name = "WRAP", .value = 0, .parameters = &.{} }, - .{ .name = "SAT", .value = 1, .parameters = &.{} }, - .{ .name = "SAT_ZERO", .value = 2, .parameters = &.{} }, - .{ .name = "SAT_SYM", .value = 3, .parameters = &.{} }, - }, + .fp_denorm_mode => &.{}, + .quantization_modes => &.{}, + .fp_operation_mode => &.{}, + .overflow_modes => &.{}, .linkage_type => &.{ .{ .name = "Export", .value = 0, .parameters = &.{} }, .{ .name = "Import", .value = 1, .parameters = &.{} }, @@ -718,12 +648,7 @@ pub const OperandKind = enum { .{ .name = "WriteOnly", .value = 1, .parameters = &.{} }, .{ .name = "ReadWrite", .value = 2, .parameters = &.{} }, }, - .host_access_qualifier => &.{ - .{ .name = "NoneINTEL", .value = 0, .parameters = &.{} }, - .{ .name = "ReadINTEL", .value = 1, .parameters = &.{} }, - .{ .name = "WriteINTEL", .value = 2, .parameters = &.{} }, - .{ .name = "ReadWriteINTEL", .value = 3, .parameters = &.{} }, - }, + .host_access_qualifier => &.{}, .function_parameter_attribute => &.{ .{ .name = "Zext", .value = 0, .parameters = &.{} }, .{ .name = "Sext", .value = 1, .parameters = &.{} }, @@ -737,17 +662,17 @@ pub const OperandKind = enum { }, .decoration => &.{ .{ .name = "RelaxedPrecision", .value = 0, .parameters = &.{} }, - .{ .name = "SpecId", .value = 1, .parameters = &.{.literal_integer} }, + .{ .name = "SpecId", .value = 1, .parameters = &.{.{ .kind = .literal_integer }} }, .{ .name = "Block", .value = 2, .parameters = &.{} }, .{ .name = "BufferBlock", .value = 3, .parameters = &.{} }, .{ .name = "RowMajor", .value = 4, .parameters = &.{} }, .{ .name = "ColMajor", .value = 5, .parameters = &.{} }, - .{ .name = "ArrayStride", .value = 6, .parameters = &.{.literal_integer} }, - .{ .name = "MatrixStride", .value = 7, .parameters = &.{.literal_integer} }, + .{ .name = "ArrayStride", .value = 6, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "MatrixStride", .value = 7, .parameters = &.{.{ .kind = .literal_integer }} }, .{ .name = "GLSLShared", .value = 8, .parameters = &.{} }, .{ .name = "GLSLPacked", .value = 9, .parameters = &.{} }, .{ .name = "CPacked", .value = 10, .parameters = &.{} }, - .{ .name = "BuiltIn", .value = 11, .parameters = &.{.built_in} }, + .{ .name = "BuiltIn", .value = 11, .parameters = &.{.{ .kind = .built_in }} }, .{ .name = "NoPerspective", .value = 13, .parameters = &.{} }, .{ .name = "Flat", .value = 14, .parameters = &.{} }, .{ .name = "Patch", .value = 15, .parameters = &.{} }, @@ -762,130 +687,41 @@ pub const OperandKind = enum { .{ .name = "NonWritable", .value = 24, .parameters = &.{} }, .{ .name = "NonReadable", .value = 25, .parameters = &.{} }, .{ .name = "Uniform", .value = 26, .parameters = &.{} }, - .{ .name = "UniformId", .value = 27, .parameters = &.{.id_scope} }, + .{ .name = "UniformId", .value = 27, .parameters = &.{.{ .kind = .id_scope }} }, .{ .name = "SaturatedConversion", .value = 28, .parameters = &.{} }, - .{ .name = "Stream", .value = 29, .parameters = &.{.literal_integer} }, - .{ .name = "Location", .value = 30, .parameters = &.{.literal_integer} }, - .{ .name = "Component", .value = 31, .parameters = &.{.literal_integer} }, - .{ .name = "Index", .value = 32, .parameters = &.{.literal_integer} }, - .{ .name = "Binding", .value = 33, .parameters = &.{.literal_integer} }, - .{ .name = "DescriptorSet", .value = 34, .parameters = &.{.literal_integer} }, - .{ .name = "Offset", .value = 35, .parameters = &.{.literal_integer} }, - .{ .name = "XfbBuffer", .value = 36, .parameters = &.{.literal_integer} }, - .{ .name = "XfbStride", .value = 37, .parameters = &.{.literal_integer} }, - .{ .name = "FuncParamAttr", .value = 38, .parameters = &.{.function_parameter_attribute} }, - .{ .name = "FPRoundingMode", .value = 39, .parameters = &.{.fp_rounding_mode} }, - .{ .name = "FPFastMathMode", .value = 40, .parameters = &.{.fp_fast_math_mode} }, - .{ .name = "LinkageAttributes", .value = 41, .parameters = &.{ .literal_string, .linkage_type } }, + .{ .name = "Stream", .value = 29, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "Location", .value = 30, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "Component", .value = 31, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "Index", .value = 32, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "Binding", .value = 33, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "DescriptorSet", .value = 34, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "Offset", .value = 35, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "XfbBuffer", .value = 36, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "XfbStride", .value = 37, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "FuncParamAttr", .value = 38, .parameters = &.{.{ .kind = .function_parameter_attribute }} }, + .{ .name = "FPRoundingMode", .value = 39, .parameters = &.{.{ .kind = .fp_rounding_mode }} }, + .{ .name = "FPFastMathMode", .value = 40, .parameters = &.{.{ .kind = .fp_fast_math_mode }} }, + .{ .name = "LinkageAttributes", .value = 41, .parameters = &.{ .{ .kind = .literal_string }, .{ .kind = .linkage_type } } }, .{ .name = "NoContraction", .value = 42, .parameters = &.{} }, - .{ .name = "InputAttachmentIndex", .value = 43, .parameters = &.{.literal_integer} }, - .{ .name = "Alignment", .value = 44, .parameters = &.{.literal_integer} }, - .{ .name = "MaxByteOffset", .value = 45, .parameters = &.{.literal_integer} }, - .{ .name = "AlignmentId", .value = 46, .parameters = &.{.id_ref} }, - .{ .name = "MaxByteOffsetId", .value = 47, .parameters = &.{.id_ref} }, + .{ .name = "InputAttachmentIndex", .value = 43, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "Alignment", .value = 44, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "MaxByteOffset", .value = 45, .parameters = &.{.{ .kind = .literal_integer }} }, + .{ .name = "AlignmentId", .value = 46, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "MaxByteOffsetId", .value = 47, .parameters = &.{.{ .kind = .id_ref }} }, .{ .name = "SaturatedToLargestFloat8NormalConversionEXT", .value = 4216, .parameters = &.{} }, .{ .name = "NoSignedWrap", .value = 4469, .parameters = &.{} }, .{ .name = "NoUnsignedWrap", .value = 4470, .parameters = &.{} }, - .{ .name = "WeightTextureQCOM", .value = 4487, .parameters = &.{} }, - .{ .name = "BlockMatchTextureQCOM", .value = 4488, .parameters = &.{} }, - .{ .name = "BlockMatchSamplerQCOM", .value = 4499, .parameters = &.{} }, - .{ .name = "ExplicitInterpAMD", .value = 4999, .parameters = &.{} }, - .{ .name = "NodeSharesPayloadLimitsWithAMDX", .value = 5019, .parameters = &.{.id_ref} }, - .{ .name = "NodeMaxPayloadsAMDX", .value = 5020, .parameters = &.{.id_ref} }, - .{ .name = "TrackFinishWritingAMDX", .value = 5078, .parameters = &.{} }, - .{ .name = "PayloadNodeNameAMDX", .value = 5091, .parameters = &.{.id_ref} }, - .{ .name = "PayloadNodeBaseIndexAMDX", .value = 5098, .parameters = &.{.id_ref} }, - .{ .name = "PayloadNodeSparseArrayAMDX", .value = 5099, .parameters = &.{} }, - .{ .name = "PayloadNodeArraySizeAMDX", .value = 5100, .parameters = &.{.id_ref} }, - .{ .name = "PayloadDispatchIndirectAMDX", .value = 5105, .parameters = &.{} }, - .{ .name = "ArrayStrideIdEXT", .value = 5124, .parameters = &.{.id_ref} }, - .{ .name = "OffsetIdEXT", .value = 5125, .parameters = &.{.id_ref} }, + .{ .name = "ArrayStrideIdEXT", .value = 5124, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "OffsetIdEXT", .value = 5125, .parameters = &.{.{ .kind = .id_ref }} }, .{ .name = "UTFEncodedKHR", .value = 5145, .parameters = &.{} }, - .{ .name = "OverrideCoverageNV", .value = 5248, .parameters = &.{} }, - .{ .name = "PassthroughNV", .value = 5250, .parameters = &.{} }, - .{ .name = "ViewportRelativeNV", .value = 5252, .parameters = &.{} }, - .{ .name = "SecondaryViewportRelativeNV", .value = 5256, .parameters = &.{.literal_integer} }, .{ .name = "PerPrimitiveEXT", .value = 5271, .parameters = &.{} }, - .{ .name = "PerViewNV", .value = 5272, .parameters = &.{} }, - .{ .name = "PerTaskNV", .value = 5273, .parameters = &.{} }, .{ .name = "PerVertexKHR", .value = 5285, .parameters = &.{} }, .{ .name = "NonUniform", .value = 5300, .parameters = &.{} }, .{ .name = "RestrictPointer", .value = 5355, .parameters = &.{} }, .{ .name = "AliasedPointer", .value = 5356, .parameters = &.{} }, - .{ .name = "MemberOffsetNV", .value = 5358, .parameters = &.{.literal_integer} }, - .{ .name = "HitObjectShaderRecordBufferNV", .value = 5386, .parameters = &.{} }, .{ .name = "HitObjectShaderRecordBufferEXT", .value = 5389, .parameters = &.{} }, - .{ .name = "BankNV", .value = 5397, .parameters = &.{.literal_integer} }, - .{ .name = "BindlessSamplerNV", .value = 5398, .parameters = &.{} }, - .{ .name = "BindlessImageNV", .value = 5399, .parameters = &.{} }, - .{ .name = "BoundSamplerNV", .value = 5400, .parameters = &.{} }, - .{ .name = "BoundImageNV", .value = 5401, .parameters = &.{} }, - .{ .name = "SIMTCallINTEL", .value = 5599, .parameters = &.{.literal_integer} }, - .{ .name = "ReferencedIndirectlyINTEL", .value = 5602, .parameters = &.{} }, - .{ .name = "ClobberINTEL", .value = 5607, .parameters = &.{.literal_string} }, - .{ .name = "SideEffectsINTEL", .value = 5608, .parameters = &.{} }, - .{ .name = "VectorComputeVariableINTEL", .value = 5624, .parameters = &.{} }, - .{ .name = "FuncParamIOKindINTEL", .value = 5625, .parameters = &.{.literal_integer} }, - .{ .name = "VectorComputeFunctionINTEL", .value = 5626, .parameters = &.{} }, - .{ .name = "StackCallINTEL", .value = 5627, .parameters = &.{} }, - .{ .name = "GlobalVariableOffsetINTEL", .value = 5628, .parameters = &.{.literal_integer} }, - .{ .name = "CounterBuffer", .value = 5634, .parameters = &.{.id_ref} }, - .{ .name = "UserSemantic", .value = 5635, .parameters = &.{.literal_string} }, - .{ .name = "UserTypeGOOGLE", .value = 5636, .parameters = &.{.literal_string} }, - .{ .name = "FunctionRoundingModeINTEL", .value = 5822, .parameters = &.{ .literal_integer, .fp_rounding_mode } }, - .{ .name = "FunctionDenormModeINTEL", .value = 5823, .parameters = &.{ .literal_integer, .fp_denorm_mode } }, - .{ .name = "RegisterALTERA", .value = 5825, .parameters = &.{} }, - .{ .name = "MemoryALTERA", .value = 5826, .parameters = &.{.literal_string} }, - .{ .name = "NumbanksALTERA", .value = 5827, .parameters = &.{.literal_integer} }, - .{ .name = "BankwidthALTERA", .value = 5828, .parameters = &.{.literal_integer} }, - .{ .name = "MaxPrivateCopiesALTERA", .value = 5829, .parameters = &.{.literal_integer} }, - .{ .name = "SinglepumpALTERA", .value = 5830, .parameters = &.{} }, - .{ .name = "DoublepumpALTERA", .value = 5831, .parameters = &.{} }, - .{ .name = "MaxReplicatesALTERA", .value = 5832, .parameters = &.{.literal_integer} }, - .{ .name = "SimpleDualPortALTERA", .value = 5833, .parameters = &.{} }, - .{ .name = "MergeALTERA", .value = 5834, .parameters = &.{ .literal_string, .literal_string } }, - .{ .name = "BankBitsALTERA", .value = 5835, .parameters = &.{.literal_integer} }, - .{ .name = "ForcePow2DepthALTERA", .value = 5836, .parameters = &.{.literal_integer} }, - .{ .name = "StridesizeALTERA", .value = 5883, .parameters = &.{.literal_integer} }, - .{ .name = "WordsizeALTERA", .value = 5884, .parameters = &.{.literal_integer} }, - .{ .name = "TrueDualPortALTERA", .value = 5885, .parameters = &.{} }, - .{ .name = "BurstCoalesceALTERA", .value = 5899, .parameters = &.{} }, - .{ .name = "CacheSizeALTERA", .value = 5900, .parameters = &.{.literal_integer} }, - .{ .name = "DontStaticallyCoalesceALTERA", .value = 5901, .parameters = &.{} }, - .{ .name = "PrefetchALTERA", .value = 5902, .parameters = &.{.literal_integer} }, - .{ .name = "StallEnableALTERA", .value = 5905, .parameters = &.{} }, - .{ .name = "FuseLoopsInFunctionALTERA", .value = 5907, .parameters = &.{} }, - .{ .name = "MathOpDSPModeALTERA", .value = 5909, .parameters = &.{ .literal_integer, .literal_integer } }, - .{ .name = "AliasScopeINTEL", .value = 5914, .parameters = &.{.id_ref} }, - .{ .name = "NoAliasINTEL", .value = 5915, .parameters = &.{.id_ref} }, - .{ .name = "InitiationIntervalALTERA", .value = 5917, .parameters = &.{.literal_integer} }, - .{ .name = "MaxConcurrencyALTERA", .value = 5918, .parameters = &.{.literal_integer} }, - .{ .name = "PipelineEnableALTERA", .value = 5919, .parameters = &.{.literal_integer} }, - .{ .name = "BufferLocationALTERA", .value = 5921, .parameters = &.{.literal_integer} }, - .{ .name = "IOPipeStorageALTERA", .value = 5944, .parameters = &.{.literal_integer} }, - .{ .name = "FunctionFloatingPointModeINTEL", .value = 6080, .parameters = &.{ .literal_integer, .fp_operation_mode } }, - .{ .name = "SingleElementVectorINTEL", .value = 6085, .parameters = &.{} }, - .{ .name = "VectorComputeCallableFunctionINTEL", .value = 6087, .parameters = &.{} }, - .{ .name = "MediaBlockIOINTEL", .value = 6140, .parameters = &.{} }, - .{ .name = "StallFreeALTERA", .value = 6151, .parameters = &.{} }, - .{ .name = "FPMaxErrorDecorationINTEL", .value = 6170, .parameters = &.{.literal_float} }, - .{ .name = "LatencyControlLabelALTERA", .value = 6172, .parameters = &.{.literal_integer} }, - .{ .name = "LatencyControlConstraintALTERA", .value = 6173, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } }, - .{ .name = "ConduitKernelArgumentALTERA", .value = 6175, .parameters = &.{} }, - .{ .name = "RegisterMapKernelArgumentALTERA", .value = 6176, .parameters = &.{} }, - .{ .name = "MMHostInterfaceAddressWidthALTERA", .value = 6177, .parameters = &.{.literal_integer} }, - .{ .name = "MMHostInterfaceDataWidthALTERA", .value = 6178, .parameters = &.{.literal_integer} }, - .{ .name = "MMHostInterfaceLatencyALTERA", .value = 6179, .parameters = &.{.literal_integer} }, - .{ .name = "MMHostInterfaceReadWriteModeALTERA", .value = 6180, .parameters = &.{.access_qualifier} }, - .{ .name = "MMHostInterfaceMaxBurstALTERA", .value = 6181, .parameters = &.{.literal_integer} }, - .{ .name = "MMHostInterfaceWaitRequestALTERA", .value = 6182, .parameters = &.{.literal_integer} }, - .{ .name = "StableKernelArgumentALTERA", .value = 6183, .parameters = &.{} }, - .{ .name = "HostAccessINTEL", .value = 6188, .parameters = &.{ .host_access_qualifier, .literal_string } }, - .{ .name = "InitModeALTERA", .value = 6190, .parameters = &.{.initialization_mode_qualifier} }, - .{ .name = "ImplementInRegisterMapALTERA", .value = 6191, .parameters = &.{.literal_integer} }, - .{ .name = "ConditionalINTEL", .value = 6247, .parameters = &.{.id_ref} }, - .{ .name = "CacheControlLoadINTEL", .value = 6442, .parameters = &.{ .literal_integer, .load_cache_control } }, - .{ .name = "CacheControlStoreINTEL", .value = 6443, .parameters = &.{ .literal_integer, .store_cache_control } }, + .{ .name = "CounterBuffer", .value = 5634, .parameters = &.{.{ .kind = .id_ref }} }, + .{ .name = "UserSemantic", .value = 5635, .parameters = &.{.{ .kind = .literal_string }} }, }, .built_in => &.{ .{ .name = "Position", .value = 0, .parameters = &.{} }, @@ -946,35 +782,10 @@ pub const OperandKind = enum { .{ .name = "DeviceIndex", .value = 4438, .parameters = &.{} }, .{ .name = "ViewIndex", .value = 4440, .parameters = &.{} }, .{ .name = "ShadingRateKHR", .value = 4444, .parameters = &.{} }, - .{ .name = "TileOffsetQCOM", .value = 4492, .parameters = &.{} }, - .{ .name = "TileDimensionQCOM", .value = 4493, .parameters = &.{} }, - .{ .name = "TileApronSizeQCOM", .value = 4494, .parameters = &.{} }, - .{ .name = "BaryCoordNoPerspAMD", .value = 4992, .parameters = &.{} }, - .{ .name = "BaryCoordNoPerspCentroidAMD", .value = 4993, .parameters = &.{} }, - .{ .name = "BaryCoordNoPerspSampleAMD", .value = 4994, .parameters = &.{} }, - .{ .name = "BaryCoordSmoothAMD", .value = 4995, .parameters = &.{} }, - .{ .name = "BaryCoordSmoothCentroidAMD", .value = 4996, .parameters = &.{} }, - .{ .name = "BaryCoordSmoothSampleAMD", .value = 4997, .parameters = &.{} }, - .{ .name = "BaryCoordPullModelAMD", .value = 4998, .parameters = &.{} }, .{ .name = "FragStencilRefEXT", .value = 5014, .parameters = &.{} }, - .{ .name = "RemainingRecursionLevelsAMDX", .value = 5021, .parameters = &.{} }, - .{ .name = "ShaderIndexAMDX", .value = 5073, .parameters = &.{} }, .{ .name = "SamplerHeapEXT", .value = 5122, .parameters = &.{} }, .{ .name = "ResourceHeapEXT", .value = 5123, .parameters = &.{} }, - .{ .name = "ViewportMaskNV", .value = 5253, .parameters = &.{} }, - .{ .name = "SecondaryPositionNV", .value = 5257, .parameters = &.{} }, - .{ .name = "SecondaryViewportMaskNV", .value = 5258, .parameters = &.{} }, - .{ .name = "PositionPerViewNV", .value = 5261, .parameters = &.{} }, - .{ .name = "ViewportMaskPerViewNV", .value = 5262, .parameters = &.{} }, .{ .name = "FullyCoveredEXT", .value = 5264, .parameters = &.{} }, - .{ .name = "TaskCountNV", .value = 5274, .parameters = &.{} }, - .{ .name = "PrimitiveCountNV", .value = 5275, .parameters = &.{} }, - .{ .name = "PrimitiveIndicesNV", .value = 5276, .parameters = &.{} }, - .{ .name = "ClipDistancePerViewNV", .value = 5277, .parameters = &.{} }, - .{ .name = "CullDistancePerViewNV", .value = 5278, .parameters = &.{} }, - .{ .name = "LayerPerViewNV", .value = 5279, .parameters = &.{} }, - .{ .name = "MeshViewCountNV", .value = 5280, .parameters = &.{} }, - .{ .name = "MeshViewIndicesNV", .value = 5281, .parameters = &.{} }, .{ .name = "BaryCoordKHR", .value = 5286, .parameters = &.{} }, .{ .name = "BaryCoordNoPerspKHR", .value = 5287, .parameters = &.{} }, .{ .name = "FragSizeEXT", .value = 5292, .parameters = &.{} }, @@ -994,27 +805,10 @@ pub const OperandKind = enum { .{ .name = "InstanceCustomIndexKHR", .value = 5327, .parameters = &.{} }, .{ .name = "ObjectToWorldKHR", .value = 5330, .parameters = &.{} }, .{ .name = "WorldToObjectKHR", .value = 5331, .parameters = &.{} }, - .{ .name = "HitTNV", .value = 5332, .parameters = &.{} }, .{ .name = "HitKindKHR", .value = 5333, .parameters = &.{} }, - .{ .name = "CurrentRayTimeNV", .value = 5334, .parameters = &.{} }, .{ .name = "HitTriangleVertexPositionsKHR", .value = 5335, .parameters = &.{} }, - .{ .name = "HitMicroTriangleVertexPositionsNV", .value = 5337, .parameters = &.{} }, - .{ .name = "HitMicroTriangleVertexBarycentricsNV", .value = 5344, .parameters = &.{} }, .{ .name = "IncomingRayFlagsKHR", .value = 5351, .parameters = &.{} }, .{ .name = "RayGeometryIndexKHR", .value = 5352, .parameters = &.{} }, - .{ .name = "HitIsSphereNV", .value = 5359, .parameters = &.{} }, - .{ .name = "HitIsLSSNV", .value = 5360, .parameters = &.{} }, - .{ .name = "HitSpherePositionNV", .value = 5361, .parameters = &.{} }, - .{ .name = "WarpsPerSMNV", .value = 5374, .parameters = &.{} }, - .{ .name = "SMCountNV", .value = 5375, .parameters = &.{} }, - .{ .name = "WarpIDNV", .value = 5376, .parameters = &.{} }, - .{ .name = "SMIDNV", .value = 5377, .parameters = &.{} }, - .{ .name = "HitLSSPositionsNV", .value = 5396, .parameters = &.{} }, - .{ .name = "HitKindFrontFacingMicroTriangleNV", .value = 5405, .parameters = &.{} }, - .{ .name = "HitKindBackFacingMicroTriangleNV", .value = 5406, .parameters = &.{} }, - .{ .name = "HitSphereRadiusNV", .value = 5420, .parameters = &.{} }, - .{ .name = "HitLSSRadiiNV", .value = 5421, .parameters = &.{} }, - .{ .name = "ClusterIDNV", .value = 5436, .parameters = &.{} }, .{ .name = "CullMaskKHR", .value = 6021, .parameters = &.{} }, }, .scope => &.{ @@ -1082,8 +876,6 @@ pub const OperandKind = enum { .{ .name = "InputAttachment", .value = 40, .parameters = &.{} }, .{ .name = "SparseResidency", .value = 41, .parameters = &.{} }, .{ .name = "MinLod", .value = 42, .parameters = &.{} }, - .{ .name = "Sampled1D", .value = 43, .parameters = &.{} }, - .{ .name = "Image1D", .value = 44, .parameters = &.{} }, .{ .name = "SampledCubeArray", .value = 45, .parameters = &.{} }, .{ .name = "SampledBuffer", .value = 46, .parameters = &.{} }, .{ .name = "ImageBuffer", .value = 47, .parameters = &.{} }, @@ -1111,15 +903,9 @@ pub const OperandKind = enum { .{ .name = "ShaderLayer", .value = 69, .parameters = &.{} }, .{ .name = "ShaderViewportIndex", .value = 70, .parameters = &.{} }, .{ .name = "UniformDecoration", .value = 71, .parameters = &.{} }, - .{ .name = "CoreBuiltinsARM", .value = 4165, .parameters = &.{} }, .{ .name = "TileImageColorReadAccessEXT", .value = 4166, .parameters = &.{} }, .{ .name = "TileImageDepthReadAccessEXT", .value = 4167, .parameters = &.{} }, .{ .name = "TileImageStencilReadAccessEXT", .value = 4168, .parameters = &.{} }, - .{ .name = "TensorsARM", .value = 4174, .parameters = &.{} }, - .{ .name = "StorageTensorArrayDynamicIndexingARM", .value = 4175, .parameters = &.{} }, - .{ .name = "StorageTensorArrayNonUniformIndexingARM", .value = 4176, .parameters = &.{} }, - .{ .name = "GraphARM", .value = 4191, .parameters = &.{} }, - .{ .name = "CooperativeMatrixLayoutsARM", .value = 4201, .parameters = &.{} }, .{ .name = "Float8EXT", .value = 4212, .parameters = &.{} }, .{ .name = "Float8CooperativeMatrixEXT", .value = 4213, .parameters = &.{} }, .{ .name = "FragmentShadingRateKHR", .value = 4422, .parameters = &.{} }, @@ -1145,30 +931,15 @@ pub const OperandKind = enum { .{ .name = "DenormPreserve", .value = 4464, .parameters = &.{} }, .{ .name = "DenormFlushToZero", .value = 4465, .parameters = &.{} }, .{ .name = "SignedZeroInfNanPreserve", .value = 4466, .parameters = &.{} }, - .{ .name = "RoundingModeRTE", .value = 4467, .parameters = &.{} }, - .{ .name = "RoundingModeRTZ", .value = 4468, .parameters = &.{} }, .{ .name = "RayQueryProvisionalKHR", .value = 4471, .parameters = &.{} }, .{ .name = "RayQueryKHR", .value = 4472, .parameters = &.{} }, .{ .name = "UntypedPointersKHR", .value = 4473, .parameters = &.{} }, .{ .name = "RayTraversalPrimitiveCullingKHR", .value = 4478, .parameters = &.{} }, .{ .name = "RayTracingKHR", .value = 4479, .parameters = &.{} }, - .{ .name = "TextureSampleWeightedQCOM", .value = 4484, .parameters = &.{} }, - .{ .name = "TextureBoxFilterQCOM", .value = 4485, .parameters = &.{} }, - .{ .name = "TextureBlockMatchQCOM", .value = 4486, .parameters = &.{} }, - .{ .name = "TileShadingQCOM", .value = 4495, .parameters = &.{} }, - .{ .name = "CooperativeMatrixConversionQCOM", .value = 4496, .parameters = &.{} }, - .{ .name = "TextureBlockMatch2QCOM", .value = 4498, .parameters = &.{} }, - .{ .name = "Float16ImageAMD", .value = 5008, .parameters = &.{} }, - .{ .name = "ImageGatherBiasLodAMD", .value = 5009, .parameters = &.{} }, - .{ .name = "FragmentMaskAMD", .value = 5010, .parameters = &.{} }, .{ .name = "StencilExportEXT", .value = 5013, .parameters = &.{} }, - .{ .name = "ImageReadWriteLodAMD", .value = 5015, .parameters = &.{} }, .{ .name = "Int64ImageEXT", .value = 5016, .parameters = &.{} }, .{ .name = "ShaderClockKHR", .value = 5055, .parameters = &.{} }, - .{ .name = "ShaderEnqueueAMDX", .value = 5067, .parameters = &.{} }, .{ .name = "QuadControlKHR", .value = 5087, .parameters = &.{} }, - .{ .name = "Int4TypeINTEL", .value = 5112, .parameters = &.{} }, - .{ .name = "Int4CooperativeMatrixINTEL", .value = 5114, .parameters = &.{} }, .{ .name = "BFloat16TypeKHR", .value = 5116, .parameters = &.{} }, .{ .name = "BFloat16DotProductKHR", .value = 5117, .parameters = &.{} }, .{ .name = "BFloat16CooperativeMatrixKHR", .value = 5118, .parameters = &.{} }, @@ -1176,15 +947,8 @@ pub const OperandKind = enum { .{ .name = "DescriptorHeapEXT", .value = 5128, .parameters = &.{} }, .{ .name = "ConstantDataKHR", .value = 5146, .parameters = &.{} }, .{ .name = "PoisonFreezeKHR", .value = 5156, .parameters = &.{} }, - .{ .name = "SampleMaskOverrideCoverageNV", .value = 5249, .parameters = &.{} }, - .{ .name = "GeometryShaderPassthroughNV", .value = 5251, .parameters = &.{} }, .{ .name = "ShaderViewportIndexLayerEXT", .value = 5254, .parameters = &.{} }, - .{ .name = "ShaderViewportMaskNV", .value = 5255, .parameters = &.{} }, - .{ .name = "ShaderStereoViewNV", .value = 5259, .parameters = &.{} }, - .{ .name = "PerViewAttributesNV", .value = 5260, .parameters = &.{} }, .{ .name = "FragmentFullyCoveredEXT", .value = 5265, .parameters = &.{} }, - .{ .name = "MeshShadingNV", .value = 5266, .parameters = &.{} }, - .{ .name = "ImageFootprintNV", .value = 5282, .parameters = &.{} }, .{ .name = "MeshShadingEXT", .value = 5283, .parameters = &.{} }, .{ .name = "FragmentBarycentricKHR", .value = 5284, .parameters = &.{} }, .{ .name = "ComputeDerivativeGroupQuadsKHR", .value = 5288, .parameters = &.{} }, @@ -1203,84 +967,24 @@ pub const OperandKind = enum { .{ .name = "UniformTexelBufferArrayNonUniformIndexing", .value = 5311, .parameters = &.{} }, .{ .name = "StorageTexelBufferArrayNonUniformIndexing", .value = 5312, .parameters = &.{} }, .{ .name = "RayTracingPositionFetchKHR", .value = 5336, .parameters = &.{} }, - .{ .name = "RayTracingNV", .value = 5340, .parameters = &.{} }, - .{ .name = "RayTracingMotionBlurNV", .value = 5341, .parameters = &.{} }, .{ .name = "VulkanMemoryModel", .value = 5345, .parameters = &.{} }, .{ .name = "VulkanMemoryModelDeviceScope", .value = 5346, .parameters = &.{} }, .{ .name = "PhysicalStorageBufferAddresses", .value = 5347, .parameters = &.{} }, .{ .name = "ComputeDerivativeGroupLinearKHR", .value = 5350, .parameters = &.{} }, .{ .name = "RayTracingProvisionalKHR", .value = 5353, .parameters = &.{} }, - .{ .name = "CooperativeMatrixNV", .value = 5357, .parameters = &.{} }, .{ .name = "FragmentShaderSampleInterlockEXT", .value = 5363, .parameters = &.{} }, .{ .name = "FragmentShaderShadingRateInterlockEXT", .value = 5372, .parameters = &.{} }, - .{ .name = "ShaderSMBuiltinsNV", .value = 5373, .parameters = &.{} }, .{ .name = "FragmentShaderPixelInterlockEXT", .value = 5378, .parameters = &.{} }, .{ .name = "DemoteToHelperInvocation", .value = 5379, .parameters = &.{} }, - .{ .name = "DisplacementMicromapNV", .value = 5380, .parameters = &.{} }, .{ .name = "RayTracingOpacityMicromapEXT", .value = 5381, .parameters = &.{} }, - .{ .name = "ShaderInvocationReorderNV", .value = 5383, .parameters = &.{} }, .{ .name = "ShaderInvocationReorderEXT", .value = 5388, .parameters = &.{} }, - .{ .name = "BindlessTextureNV", .value = 5390, .parameters = &.{} }, .{ .name = "RayQueryPositionFetchKHR", .value = 5391, .parameters = &.{} }, - .{ .name = "CooperativeVectorNV", .value = 5394, .parameters = &.{} }, - .{ .name = "AtomicFloat16VectorNV", .value = 5404, .parameters = &.{} }, - .{ .name = "RayTracingDisplacementMicromapNV", .value = 5409, .parameters = &.{} }, - .{ .name = "RawAccessChainsNV", .value = 5414, .parameters = &.{} }, - .{ .name = "RayTracingSpheresGeometryNV", .value = 5418, .parameters = &.{} }, - .{ .name = "RayTracingLinearSweptSpheresGeometryNV", .value = 5419, .parameters = &.{} }, - .{ .name = "PushConstantBanksNV", .value = 5423, .parameters = &.{} }, .{ .name = "LongVectorEXT", .value = 5425, .parameters = &.{} }, .{ .name = "Shader64BitIndexingEXT", .value = 5426, .parameters = &.{} }, - .{ .name = "CooperativeMatrixReductionsNV", .value = 5430, .parameters = &.{} }, - .{ .name = "CooperativeMatrixConversionsNV", .value = 5431, .parameters = &.{} }, - .{ .name = "CooperativeMatrixPerElementOperationsNV", .value = 5432, .parameters = &.{} }, - .{ .name = "CooperativeMatrixTensorAddressingNV", .value = 5433, .parameters = &.{} }, - .{ .name = "CooperativeMatrixBlockLoadsNV", .value = 5434, .parameters = &.{} }, - .{ .name = "CooperativeVectorTrainingNV", .value = 5435, .parameters = &.{} }, - .{ .name = "RayTracingClusterAccelerationStructureNV", .value = 5437, .parameters = &.{} }, - .{ .name = "TensorAddressingNV", .value = 5439, .parameters = &.{} }, - .{ .name = "SubgroupShuffleINTEL", .value = 5568, .parameters = &.{} }, - .{ .name = "SubgroupBufferBlockIOINTEL", .value = 5569, .parameters = &.{} }, - .{ .name = "SubgroupImageBlockIOINTEL", .value = 5570, .parameters = &.{} }, - .{ .name = "SubgroupImageMediaBlockIOINTEL", .value = 5579, .parameters = &.{} }, - .{ .name = "RoundToInfinityINTEL", .value = 5582, .parameters = &.{} }, - .{ .name = "FloatingPointModeINTEL", .value = 5583, .parameters = &.{} }, - .{ .name = "IntegerFunctions2INTEL", .value = 5584, .parameters = &.{} }, - .{ .name = "FunctionPointersINTEL", .value = 5603, .parameters = &.{} }, - .{ .name = "IndirectReferencesINTEL", .value = 5604, .parameters = &.{} }, - .{ .name = "AsmINTEL", .value = 5606, .parameters = &.{} }, .{ .name = "AtomicFloat32MinMaxEXT", .value = 5612, .parameters = &.{} }, .{ .name = "AtomicFloat64MinMaxEXT", .value = 5613, .parameters = &.{} }, .{ .name = "AtomicFloat16MinMaxEXT", .value = 5616, .parameters = &.{} }, - .{ .name = "VectorComputeINTEL", .value = 5617, .parameters = &.{} }, - .{ .name = "VectorAnyINTEL", .value = 5619, .parameters = &.{} }, .{ .name = "ExpectAssumeKHR", .value = 5629, .parameters = &.{} }, - .{ .name = "SubgroupAvcMotionEstimationINTEL", .value = 5696, .parameters = &.{} }, - .{ .name = "SubgroupAvcMotionEstimationIntraINTEL", .value = 5697, .parameters = &.{} }, - .{ .name = "SubgroupAvcMotionEstimationChromaINTEL", .value = 5698, .parameters = &.{} }, - .{ .name = "VariableLengthArrayINTEL", .value = 5817, .parameters = &.{} }, - .{ .name = "FunctionFloatControlINTEL", .value = 5821, .parameters = &.{} }, - .{ .name = "FPGAMemoryAttributesALTERA", .value = 5824, .parameters = &.{} }, - .{ .name = "FPFastMathModeINTEL", .value = 5837, .parameters = &.{} }, - .{ .name = "ArbitraryPrecisionIntegersALTERA", .value = 5844, .parameters = &.{} }, - .{ .name = "ArbitraryPrecisionFloatingPointALTERA", .value = 5845, .parameters = &.{} }, - .{ .name = "UnstructuredLoopControlsINTEL", .value = 5886, .parameters = &.{} }, - .{ .name = "FPGALoopControlsALTERA", .value = 5888, .parameters = &.{} }, - .{ .name = "KernelAttributesINTEL", .value = 5892, .parameters = &.{} }, - .{ .name = "FPGAKernelAttributesINTEL", .value = 5897, .parameters = &.{} }, - .{ .name = "FPGAMemoryAccessesALTERA", .value = 5898, .parameters = &.{} }, - .{ .name = "FPGAClusterAttributesALTERA", .value = 5904, .parameters = &.{} }, - .{ .name = "LoopFuseALTERA", .value = 5906, .parameters = &.{} }, - .{ .name = "FPGADSPControlALTERA", .value = 5908, .parameters = &.{} }, - .{ .name = "MemoryAccessAliasingINTEL", .value = 5910, .parameters = &.{} }, - .{ .name = "FPGAInvocationPipeliningAttributesALTERA", .value = 5916, .parameters = &.{} }, - .{ .name = "FPGABufferLocationALTERA", .value = 5920, .parameters = &.{} }, - .{ .name = "ArbitraryPrecisionFixedPointALTERA", .value = 5922, .parameters = &.{} }, - .{ .name = "USMStorageClassesALTERA", .value = 5935, .parameters = &.{} }, - .{ .name = "RuntimeAlignedAttributeALTERA", .value = 5939, .parameters = &.{} }, - .{ .name = "IOPipesALTERA", .value = 5943, .parameters = &.{} }, - .{ .name = "BlockingPipesALTERA", .value = 5945, .parameters = &.{} }, - .{ .name = "FPGARegALTERA", .value = 5948, .parameters = &.{} }, .{ .name = "DotProductInputAll", .value = 6016, .parameters = &.{} }, .{ .name = "DotProductInput4x8Bit", .value = 6017, .parameters = &.{} }, .{ .name = "DotProductInput4x8BitPacked", .value = 6018, .parameters = &.{} }, @@ -1294,40 +998,10 @@ pub const OperandKind = enum { .{ .name = "FMAKHR", .value = 6030, .parameters = &.{} }, .{ .name = "AtomicFloat32AddEXT", .value = 6033, .parameters = &.{} }, .{ .name = "AtomicFloat64AddEXT", .value = 6034, .parameters = &.{} }, - .{ .name = "LongCompositesINTEL", .value = 6089, .parameters = &.{} }, .{ .name = "OptNoneEXT", .value = 6094, .parameters = &.{} }, .{ .name = "AtomicFloat16AddEXT", .value = 6095, .parameters = &.{} }, - .{ .name = "DebugInfoModuleINTEL", .value = 6114, .parameters = &.{} }, - .{ .name = "BFloat16ConversionINTEL", .value = 6115, .parameters = &.{} }, - .{ .name = "SplitBarrierINTEL", .value = 6141, .parameters = &.{} }, .{ .name = "ArithmeticFenceEXT", .value = 6144, .parameters = &.{} }, - .{ .name = "FPGAClusterAttributesV2ALTERA", .value = 6150, .parameters = &.{} }, - .{ .name = "FPGAKernelAttributesv2INTEL", .value = 6161, .parameters = &.{} }, - .{ .name = "TaskSequenceALTERA", .value = 6162, .parameters = &.{} }, - .{ .name = "FPMaxErrorINTEL", .value = 6169, .parameters = &.{} }, - .{ .name = "FPGALatencyControlALTERA", .value = 6171, .parameters = &.{} }, - .{ .name = "FPGAArgumentInterfacesALTERA", .value = 6174, .parameters = &.{} }, - .{ .name = "GlobalVariableHostAccessINTEL", .value = 6187, .parameters = &.{} }, - .{ .name = "GlobalVariableFPGADecorationsALTERA", .value = 6189, .parameters = &.{} }, - .{ .name = "SubgroupBufferPrefetchINTEL", .value = 6220, .parameters = &.{} }, - .{ .name = "Subgroup2DBlockIOINTEL", .value = 6228, .parameters = &.{} }, - .{ .name = "Subgroup2DBlockTransformINTEL", .value = 6229, .parameters = &.{} }, - .{ .name = "Subgroup2DBlockTransposeINTEL", .value = 6230, .parameters = &.{} }, - .{ .name = "SubgroupMatrixMultiplyAccumulateINTEL", .value = 6236, .parameters = &.{} }, - .{ .name = "TernaryBitwiseFunctionINTEL", .value = 6241, .parameters = &.{} }, - .{ .name = "UntypedVariableLengthArrayINTEL", .value = 6243, .parameters = &.{} }, - .{ .name = "SpecConditionalINTEL", .value = 6245, .parameters = &.{} }, - .{ .name = "FunctionVariantsINTEL", .value = 6246, .parameters = &.{} }, .{ .name = "GroupUniformArithmeticKHR", .value = 6400, .parameters = &.{} }, - .{ .name = "TensorFloat32RoundingINTEL", .value = 6425, .parameters = &.{} }, - .{ .name = "MaskedGatherScatterINTEL", .value = 6427, .parameters = &.{} }, - .{ .name = "CacheControlsINTEL", .value = 6441, .parameters = &.{} }, - .{ .name = "RegisterLimitsINTEL", .value = 6460, .parameters = &.{} }, - .{ .name = "BindlessImagesINTEL", .value = 6528, .parameters = &.{} }, - .{ .name = "DotProductFloat16AccFloat32VALVE", .value = 6912, .parameters = &.{} }, - .{ .name = "DotProductFloat16AccFloat16VALVE", .value = 6913, .parameters = &.{} }, - .{ .name = "DotProductBFloat16AccVALVE", .value = 6914, .parameters = &.{} }, - .{ .name = "DotProductFloat8AccFloat32VALVE", .value = 6915, .parameters = &.{} }, }, .ray_query_intersection => &.{ .{ .name = "RayQueryCandidateIntersectionKHR", .value = 0, .parameters = &.{} }, @@ -1356,8 +1030,6 @@ pub const OperandKind = enum { .cooperative_matrix_layout => &.{ .{ .name = "RowMajorKHR", .value = 0, .parameters = &.{} }, .{ .name = "ColumnMajorKHR", .value = 1, .parameters = &.{} }, - .{ .name = "RowBlockedInterleavedARM", .value = 4202, .parameters = &.{} }, - .{ .name = "ColumnBlockedInterleavedARM", .value = 4203, .parameters = &.{} }, }, .cooperative_matrix_use => &.{ .{ .name = "MatrixAKHR", .value = 0, .parameters = &.{} }, @@ -1376,30 +1048,11 @@ pub const OperandKind = enum { .{ .name = "Repeat", .value = 3, .parameters = &.{} }, .{ .name = "RepeatMirrored", .value = 4, .parameters = &.{} }, }, - .tensor_addressing_operands => &.{ - .{ .name = "TensorView", .value = 0x0001, .parameters = &.{.id_ref} }, - .{ .name = "DecodeFunc", .value = 0x0002, .parameters = &.{.id_ref} }, - }, - .initialization_mode_qualifier => &.{ - .{ .name = "InitOnDeviceReprogramALTERA", .value = 0, .parameters = &.{} }, - .{ .name = "InitOnDeviceResetALTERA", .value = 1, .parameters = &.{} }, - }, - .load_cache_control => &.{ - .{ .name = "UncachedINTEL", .value = 0, .parameters = &.{} }, - .{ .name = "CachedINTEL", .value = 1, .parameters = &.{} }, - .{ .name = "StreamingINTEL", .value = 2, .parameters = &.{} }, - .{ .name = "InvalidateAfterReadINTEL", .value = 3, .parameters = &.{} }, - .{ .name = "ConstCachedINTEL", .value = 4, .parameters = &.{} }, - }, - .store_cache_control => &.{ - .{ .name = "UncachedINTEL", .value = 0, .parameters = &.{} }, - .{ .name = "WriteThroughINTEL", .value = 1, .parameters = &.{} }, - .{ .name = "WriteBackINTEL", .value = 2, .parameters = &.{} }, - .{ .name = "StreamingINTEL", .value = 3, .parameters = &.{} }, - }, - .named_maximum_number_of_registers => &.{ - .{ .name = "AutoINTEL", .value = 0, .parameters = &.{} }, - }, + .tensor_addressing_operands => &.{}, + .initialization_mode_qualifier => &.{}, + .load_cache_control => &.{}, + .store_cache_control => &.{}, + .named_maximum_number_of_registers => &.{}, .matrix_multiply_accumulate_operands => &.{ .{ .name = "MatrixASignedComponentsINTEL", .value = 0x1, .parameters = &.{} }, .{ .name = "MatrixBSignedComponentsINTEL", .value = 0x2, .parameters = &.{} }, @@ -1458,14 +1111,16 @@ pub const OperandKind = enum { .pair_literal_integer_id_ref => unreachable, .pair_id_ref_literal_integer => unreachable, .pair_id_ref_id_ref => unreachable, - .tensor_operands => &.{ - .{ .name = "NoneARM", .value = 0x0000, .parameters = &.{} }, - .{ .name = "NontemporalARM", .value = 0x0001, .parameters = &.{} }, - .{ .name = "OutOfBoundsValueARM", .value = 0x0002, .parameters = &.{.id_ref} }, - .{ .name = "MakeElementAvailableARM", .value = 0x0004, .parameters = &.{.id_ref} }, - .{ .name = "MakeElementVisibleARM", .value = 0x0008, .parameters = &.{.id_ref} }, - .{ .name = "NonPrivateElementARM", .value = 0x0010, .parameters = &.{} }, - }, + .tensor_operands => &.{}, + }; + } + + pub fn bases(operand_kind: OperandKind) []const OperandKind { + return switch (operand_kind) { + .pair_literal_integer_id_ref => &.{ .literal_integer, .id_ref }, + .pair_id_ref_literal_integer => &.{ .id_ref, .literal_integer }, + .pair_id_ref_id_ref => &.{ .id_ref, .id_ref }, + else => unreachable, }; } }; @@ -1818,17 +1473,6 @@ pub const Opcode = enum(u16) { OpColorAttachmentReadEXT = 4160, OpDepthAttachmentReadEXT = 4161, OpStencilAttachmentReadEXT = 4162, - OpTypeTensorARM = 4163, - OpTensorReadARM = 4164, - OpTensorWriteARM = 4165, - OpTensorQuerySizeARM = 4166, - OpGraphConstantARM = 4181, - OpGraphEntryPointARM = 4182, - OpGraphARM = 4183, - OpGraphInputARM = 4184, - OpGraphSetOutputARM = 4185, - OpGraphEndARM = 4186, - OpTypeGraphARM = 4190, OpTerminateInvocation = 4416, OpTypeUntypedPointerKHR = 4417, OpUntypedVariableKHR = 4418, @@ -1874,37 +1518,7 @@ pub const Opcode = enum(u16) { OpRayQueryConfirmIntersectionKHR = 4476, OpRayQueryProceedKHR = 4477, OpRayQueryGetIntersectionTypeKHR = 4479, - OpImageSampleWeightedQCOM = 4480, - OpImageBoxFilterQCOM = 4481, - OpImageBlockMatchSSDQCOM = 4482, - OpImageBlockMatchSADQCOM = 4483, - OpBitCastArrayQCOM = 4497, - OpImageBlockMatchWindowSSDQCOM = 4500, - OpImageBlockMatchWindowSADQCOM = 4501, - OpImageBlockMatchGatherSSDQCOM = 4502, - OpImageBlockMatchGatherSADQCOM = 4503, - OpCompositeConstructCoopMatQCOM = 4540, - OpCompositeExtractCoopMatQCOM = 4541, - OpExtractSubArrayQCOM = 4542, - OpGroupIAddNonUniformAMD = 5000, - OpGroupFAddNonUniformAMD = 5001, - OpGroupFMinNonUniformAMD = 5002, - OpGroupUMinNonUniformAMD = 5003, - OpGroupSMinNonUniformAMD = 5004, - OpGroupFMaxNonUniformAMD = 5005, - OpGroupUMaxNonUniformAMD = 5006, - OpGroupSMaxNonUniformAMD = 5007, - OpFragmentMaskFetchAMD = 5011, - OpFragmentFetchAMD = 5012, OpReadClockKHR = 5056, - OpAllocateNodePayloadsAMDX = 5074, - OpEnqueueNodePayloadsAMDX = 5075, - OpTypeNodePayloadArrayAMDX = 5076, - OpFinishWritingNodePayloadAMDX = 5078, - OpNodePayloadArrayLengthAMDX = 5090, - OpIsNodePayloadValidAMDX = 5101, - OpConstantStringAMDX = 5103, - OpSpecConstantStringAMDX = 5104, OpGroupNonUniformQuadAllKHR = 5110, OpGroupNonUniformQuadAnyKHR = 5111, OpTypeBufferEXT = 5115, @@ -1917,54 +1531,10 @@ pub const Opcode = enum(u16) { OpSpecConstantDataKHR = 5148, OpPoisonKHR = 5158, OpFreezeKHR = 5159, - OpHitObjectRecordHitMotionNV = 5249, - OpHitObjectRecordHitWithIndexMotionNV = 5250, - OpHitObjectRecordMissMotionNV = 5251, - OpHitObjectGetWorldToObjectNV = 5252, - OpHitObjectGetObjectToWorldNV = 5253, - OpHitObjectGetObjectRayDirectionNV = 5254, - OpHitObjectGetObjectRayOriginNV = 5255, - OpHitObjectTraceRayMotionNV = 5256, - OpHitObjectGetShaderRecordBufferHandleNV = 5257, - OpHitObjectGetShaderBindingTableRecordIndexNV = 5258, - OpHitObjectRecordEmptyNV = 5259, - OpHitObjectTraceRayNV = 5260, - OpHitObjectRecordHitNV = 5261, - OpHitObjectRecordHitWithIndexNV = 5262, - OpHitObjectRecordMissNV = 5263, - OpHitObjectExecuteShaderNV = 5264, - OpHitObjectGetCurrentTimeNV = 5265, - OpHitObjectGetAttributesNV = 5266, - OpHitObjectGetHitKindNV = 5267, - OpHitObjectGetPrimitiveIndexNV = 5268, - OpHitObjectGetGeometryIndexNV = 5269, - OpHitObjectGetInstanceIdNV = 5270, - OpHitObjectGetInstanceCustomIndexNV = 5271, - OpHitObjectGetWorldRayDirectionNV = 5272, - OpHitObjectGetWorldRayOriginNV = 5273, - OpHitObjectGetRayTMaxNV = 5274, - OpHitObjectGetRayTMinNV = 5275, - OpHitObjectIsEmptyNV = 5276, - OpHitObjectIsHitNV = 5277, - OpHitObjectIsMissNV = 5278, - OpReorderThreadWithHitObjectNV = 5279, - OpReorderThreadWithHintNV = 5280, - OpTypeHitObjectNV = 5281, - OpImageSampleFootprintNV = 5283, OpTypeVectorIdEXT = 5288, - OpCooperativeVectorMatrixMulNV = 5289, - OpCooperativeVectorOuterProductAccumulateNV = 5290, - OpCooperativeVectorReduceSumAccumulateNV = 5291, - OpCooperativeVectorMatrixMulAddNV = 5292, - OpCooperativeMatrixConvertNV = 5293, OpEmitMeshTasksEXT = 5294, OpSetMeshOutputsEXT = 5295, OpGroupNonUniformPartitionEXT = 5296, - OpWritePackedPrimitiveIndices4x8NV = 5299, - OpFetchMicroTriangleVertexPositionNV = 5300, - OpFetchMicroTriangleVertexBarycentricNV = 5301, - OpCooperativeVectorLoadNV = 5302, - OpCooperativeVectorStoreNV = 5303, OpHitObjectRecordFromQueryEXT = 5304, OpHitObjectRecordMissEXT = 5305, OpHitObjectRecordMissMotionEXT = 5306, @@ -1996,103 +1566,24 @@ pub const Opcode = enum(u16) { OpHitObjectGetWorldToObjectEXT = 5332, OpHitObjectGetRayTMaxEXT = 5333, OpReportIntersectionKHR = 5334, - OpIgnoreIntersectionNV = 5335, - OpTerminateRayNV = 5336, - OpTraceNV = 5337, - OpTraceMotionNV = 5338, - OpTraceRayMotionNV = 5339, OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340, OpTypeAccelerationStructureKHR = 5341, - OpExecuteCallableNV = 5344, - OpRayQueryGetIntersectionClusterIdNV = 5345, - OpHitObjectGetClusterIdNV = 5346, OpHitObjectGetRayTMinEXT = 5347, OpHitObjectGetShaderBindingTableRecordIndexEXT = 5348, OpHitObjectGetShaderRecordBufferHandleEXT = 5349, OpHitObjectIsEmptyEXT = 5350, OpHitObjectIsHitEXT = 5351, OpHitObjectIsMissEXT = 5352, - OpTypeCooperativeMatrixNV = 5358, - OpCooperativeMatrixLoadNV = 5359, - OpCooperativeMatrixStoreNV = 5360, - OpCooperativeMatrixMulAddNV = 5361, - OpCooperativeMatrixLengthNV = 5362, OpBeginInvocationInterlockEXT = 5364, OpEndInvocationInterlockEXT = 5365, - OpCooperativeMatrixReduceNV = 5366, - OpCooperativeMatrixLoadTensorNV = 5367, - OpCooperativeMatrixStoreTensorNV = 5368, - OpCooperativeMatrixPerElementOpNV = 5369, - OpTypeTensorLayoutNV = 5370, - OpTypeTensorViewNV = 5371, - OpCreateTensorLayoutNV = 5372, - OpTensorLayoutSetDimensionNV = 5373, - OpTensorLayoutSetStrideNV = 5374, - OpTensorLayoutSliceNV = 5375, - OpTensorLayoutSetClampValueNV = 5376, - OpCreateTensorViewNV = 5377, - OpTensorViewSetDimensionNV = 5378, - OpTensorViewSetStrideNV = 5379, OpDemoteToHelperInvocation = 5380, OpIsHelperInvocationEXT = 5381, - OpTensorViewSetClipNV = 5382, - OpTensorLayoutSetBlockSizeNV = 5384, - OpCooperativeMatrixTransposeNV = 5390, - OpConvertUToImageNV = 5391, - OpConvertUToSamplerNV = 5392, - OpConvertImageToUNV = 5393, - OpConvertSamplerToUNV = 5394, - OpConvertUToSampledImageNV = 5395, - OpConvertSampledImageToUNV = 5396, - OpSamplerImageAddressingModeNV = 5397, - OpRawAccessChainNV = 5398, - OpRayQueryGetIntersectionSpherePositionNV = 5427, - OpRayQueryGetIntersectionSphereRadiusNV = 5428, - OpRayQueryGetIntersectionLSSPositionsNV = 5429, - OpRayQueryGetIntersectionLSSRadiiNV = 5430, - OpRayQueryGetIntersectionLSSHitValueNV = 5431, - OpHitObjectGetSpherePositionNV = 5432, - OpHitObjectGetSphereRadiusNV = 5433, - OpHitObjectGetLSSPositionsNV = 5434, - OpHitObjectGetLSSRadiiNV = 5435, - OpHitObjectIsSphereHitNV = 5436, - OpHitObjectIsLSSHitNV = 5437, - OpRayQueryIsSphereHitNV = 5438, - OpRayQueryIsLSSHitNV = 5439, - OpSubgroupShuffleINTEL = 5571, - OpSubgroupShuffleDownINTEL = 5572, - OpSubgroupShuffleUpINTEL = 5573, - OpSubgroupShuffleXorINTEL = 5574, - OpSubgroupBlockReadINTEL = 5575, - OpSubgroupBlockWriteINTEL = 5576, - OpSubgroupImageBlockReadINTEL = 5577, - OpSubgroupImageBlockWriteINTEL = 5578, - OpSubgroupImageMediaBlockReadINTEL = 5580, - OpSubgroupImageMediaBlockWriteINTEL = 5581, - OpUCountLeadingZerosINTEL = 5585, - OpUCountTrailingZerosINTEL = 5586, - OpAbsISubINTEL = 5587, - OpAbsUSubINTEL = 5588, - OpIAddSatINTEL = 5589, - OpUAddSatINTEL = 5590, - OpIAverageINTEL = 5591, - OpUAverageINTEL = 5592, - OpIAverageRoundedINTEL = 5593, - OpUAverageRoundedINTEL = 5594, - OpISubSatINTEL = 5595, - OpUSubSatINTEL = 5596, - OpIMul32x16INTEL = 5597, - OpUMul32x16INTEL = 5598, OpAtomicFMinEXT = 5614, OpAtomicFMaxEXT = 5615, OpAssumeTrueKHR = 5630, OpExpectKHR = 5631, OpDecorateString = 5632, OpMemberDecorateString = 5633, - OpVariableLengthArrayINTEL = 5818, - OpSaveMemoryINTEL = 5819, - OpRestoreMemoryINTEL = 5820, - OpLoopControlINTEL = 5887, OpRayQueryGetRayTMinKHR = 6016, OpRayQueryGetRayFlagsKHR = 6017, OpRayQueryGetIntersectionTKHR = 6018, @@ -2111,32 +1602,7 @@ pub const Opcode = enum(u16) { OpRayQueryGetIntersectionObjectToWorldKHR = 6031, OpRayQueryGetIntersectionWorldToObjectKHR = 6032, OpAtomicFAddEXT = 6035, - OpTypeBufferSurfaceINTEL = 6086, - OpTypeStructContinuedINTEL = 6090, - OpConstantCompositeContinuedINTEL = 6091, - OpSpecConstantCompositeContinuedINTEL = 6092, - OpCompositeConstructContinuedINTEL = 6096, - OpConvertFToBF16INTEL = 6116, - OpConvertBF16ToFINTEL = 6117, - OpControlBarrierArriveINTEL = 6142, - OpControlBarrierWaitINTEL = 6143, OpArithmeticFenceEXT = 6145, - OpSubgroupBlockPrefetchINTEL = 6221, - OpSubgroup2DBlockLoadINTEL = 6231, - OpSubgroup2DBlockLoadTransformINTEL = 6232, - OpSubgroup2DBlockLoadTransposeINTEL = 6233, - OpSubgroup2DBlockPrefetchINTEL = 6234, - OpSubgroup2DBlockStoreINTEL = 6235, - OpSubgroupMatrixMultiplyAccumulateINTEL = 6237, - OpBitwiseFunctionINTEL = 6242, - OpUntypedVariableLengthArrayINTEL = 6244, - OpConditionalExtensionINTEL = 6248, - OpConditionalEntryPointINTEL = 6249, - OpConditionalCapabilityINTEL = 6250, - OpSpecConstantTargetINTEL = 6251, - OpSpecConstantArchitectureINTEL = 6252, - OpSpecConstantCapabilitiesINTEL = 6253, - OpConditionalCopyObjectINTEL = 6254, OpGroupIMulKHR = 6401, OpGroupFMulKHR = 6402, OpGroupBitwiseAndKHR = 6403, @@ -2145,18 +1611,499 @@ pub const Opcode = enum(u16) { OpGroupLogicalAndKHR = 6406, OpGroupLogicalOrKHR = 6407, OpGroupLogicalXorKHR = 6408, - OpRoundFToTF32INTEL = 6426, - OpMaskedGatherINTEL = 6428, - OpMaskedScatterINTEL = 6429, - OpConvertHandleToImageINTEL = 6529, - OpConvertHandleToSamplerINTEL = 6530, - OpConvertHandleToSampledImageINTEL = 6531, - OpFDot2MixAcc32VALVE = 6916, - OpFDot2MixAcc16VALVE = 6917, - OpFDot4MixAcc32VALVE = 6918, - pub fn Operands(comptime self: Opcode) type { - return switch (self) { + pub fn operands(opcode: Opcode) []const Operand { + return switch (opcode) { + .OpNop => &.{}, + .OpUndef => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpSourceContinued => &.{.{ .kind = .literal_string }}, + .OpSource => &.{ .{ .kind = .source_language }, .{ .kind = .literal_integer }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .literal_string, .quantifier = .optional } }, + .OpSourceExtension => &.{.{ .kind = .literal_string }}, + .OpName => &.{ .{ .kind = .id_ref }, .{ .kind = .literal_string } }, + .OpMemberName => &.{ .{ .kind = .id_ref }, .{ .kind = .literal_integer }, .{ .kind = .literal_string } }, + .OpString => &.{ .{ .kind = .id_result }, .{ .kind = .literal_string } }, + .OpLine => &.{ .{ .kind = .id_ref }, .{ .kind = .literal_integer }, .{ .kind = .literal_integer } }, + .OpExtension => &.{.{ .kind = .literal_string }}, + .OpExtInstImport => &.{ .{ .kind = .id_result }, .{ .kind = .literal_string } }, + .OpExtInst => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .literal_ext_inst_integer }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpMemoryModel => &.{ .{ .kind = .addressing_model }, .{ .kind = .memory_model } }, + .OpEntryPoint => &.{ .{ .kind = .execution_model }, .{ .kind = .id_ref }, .{ .kind = .literal_string }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpExecutionMode => &.{ .{ .kind = .id_ref }, .{ .kind = .execution_mode } }, + .OpCapability => &.{.{ .kind = .capability }}, + .OpTypeVoid => &.{.{ .kind = .id_result }}, + .OpTypeBool => &.{.{ .kind = .id_result }}, + .OpTypeInt => &.{ .{ .kind = .id_result }, .{ .kind = .literal_integer }, .{ .kind = .literal_integer } }, + .OpTypeFloat => &.{ .{ .kind = .id_result }, .{ .kind = .literal_integer }, .{ .kind = .fp_encoding, .quantifier = .optional } }, + .OpTypeVector => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .literal_integer } }, + .OpTypeMatrix => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .literal_integer } }, + .OpTypeImage => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .dim }, .{ .kind = .literal_integer }, .{ .kind = .literal_integer }, .{ .kind = .literal_integer }, .{ .kind = .literal_integer }, .{ .kind = .image_format }, .{ .kind = .access_qualifier, .quantifier = .optional } }, + .OpTypeSampler => &.{.{ .kind = .id_result }}, + .OpTypeSampledImage => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpTypeArray => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpTypeRuntimeArray => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpTypeStruct => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpTypeOpaque => &.{ .{ .kind = .id_result }, .{ .kind = .literal_string } }, + .OpTypePointer => &.{ .{ .kind = .id_result }, .{ .kind = .storage_class }, .{ .kind = .id_ref } }, + .OpTypeFunction => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpTypeEvent => &.{.{ .kind = .id_result }}, + .OpTypeDeviceEvent => &.{.{ .kind = .id_result }}, + .OpTypeReserveId => &.{.{ .kind = .id_result }}, + .OpTypeQueue => &.{.{ .kind = .id_result }}, + .OpTypePipe => &.{ .{ .kind = .id_result }, .{ .kind = .access_qualifier } }, + .OpTypeForwardPointer => &.{ .{ .kind = .id_ref }, .{ .kind = .storage_class } }, + .OpConstantTrue => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpConstantFalse => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpConstant => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .literal_context_dependent_number } }, + .OpConstantComposite => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpConstantSampler => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .sampler_addressing_mode }, .{ .kind = .literal_integer }, .{ .kind = .sampler_filter_mode } }, + .OpConstantNull => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpSpecConstantTrue => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpSpecConstantFalse => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpSpecConstant => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .literal_context_dependent_number } }, + .OpSpecConstantComposite => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpSpecConstantOp => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .literal_spec_constant_op_integer } }, + .OpFunction => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .function_control }, .{ .kind = .id_ref } }, + .OpFunctionParameter => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpFunctionEnd => &.{}, + .OpFunctionCall => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpVariable => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .storage_class }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpImageTexelPointer => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpLoad => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .memory_access, .quantifier = .optional } }, + .OpStore => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .memory_access, .quantifier = .optional } }, + .OpCopyMemory => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .memory_access, .quantifier = .optional }, .{ .kind = .memory_access, .quantifier = .optional } }, + .OpCopyMemorySized => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .memory_access, .quantifier = .optional }, .{ .kind = .memory_access, .quantifier = .optional } }, + .OpAccessChain => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpInBoundsAccessChain => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpPtrAccessChain => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpArrayLength => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .literal_integer } }, + .OpGenericPtrMemSemantics => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpInBoundsPtrAccessChain => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpDecorate => &.{ .{ .kind = .id_ref }, .{ .kind = .decoration } }, + .OpMemberDecorate => &.{ .{ .kind = .id_ref }, .{ .kind = .literal_integer }, .{ .kind = .decoration } }, + .OpDecorationGroup => &.{.{ .kind = .id_result }}, + .OpGroupDecorate => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpGroupMemberDecorate => &.{ .{ .kind = .id_ref }, .{ .kind = .pair_id_ref_literal_integer, .quantifier = .variadic } }, + .OpVectorExtractDynamic => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpVectorInsertDynamic => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpVectorShuffle => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .literal_integer, .quantifier = .variadic } }, + .OpCompositeConstruct => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpCompositeExtract => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .literal_integer, .quantifier = .variadic } }, + .OpCompositeInsert => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .literal_integer, .quantifier = .variadic } }, + .OpCopyObject => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpTranspose => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSampledImage => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpImageSampleImplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSampleExplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands } }, + .OpImageSampleDrefImplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSampleDrefExplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands } }, + .OpImageSampleProjImplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSampleProjExplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands } }, + .OpImageSampleProjDrefImplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSampleProjDrefExplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands } }, + .OpImageFetch => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageGather => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageDrefGather => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageRead => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageWrite => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImage => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpImageQueryFormat => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpImageQueryOrder => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpImageQuerySizeLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpImageQuerySize => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpImageQueryLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpImageQueryLevels => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpImageQuerySamples => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpConvertFToU => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpConvertFToS => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpConvertSToF => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpConvertUToF => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpUConvert => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSConvert => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpFConvert => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpQuantizeToF16 => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpConvertPtrToU => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSatConvertSToU => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSatConvertUToS => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpConvertUToPtr => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpPtrCastToGeneric => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpGenericCastToPtr => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpGenericCastToPtrExplicit => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .storage_class } }, + .OpBitcast => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSNegate => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpFNegate => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpIAdd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFAdd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpISub => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFSub => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpIMul => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFMul => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpUDiv => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpSDiv => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFDiv => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpUMod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpSRem => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpSMod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFRem => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFMod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpVectorTimesScalar => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpMatrixTimesScalar => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpVectorTimesMatrix => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpMatrixTimesVector => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpMatrixTimesMatrix => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpOuterProduct => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpDot => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpIAddCarry => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpISubBorrow => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpUMulExtended => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpSMulExtended => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpAny => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpAll => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpIsNan => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpIsInf => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpIsFinite => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpIsNormal => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSignBitSet => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpLessOrGreater => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpOrdered => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpUnordered => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpLogicalEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpLogicalNotEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpLogicalOr => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpLogicalAnd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpLogicalNot => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSelect => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpIEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpINotEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpUGreaterThan => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpSGreaterThan => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpUGreaterThanEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpSGreaterThanEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpULessThan => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpSLessThan => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpULessThanEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpSLessThanEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFOrdEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFUnordEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFOrdNotEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFUnordNotEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFOrdLessThan => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFUnordLessThan => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFOrdGreaterThan => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFUnordGreaterThan => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFOrdLessThanEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFUnordLessThanEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFOrdGreaterThanEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpFUnordGreaterThanEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpShiftRightLogical => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpShiftRightArithmetic => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpShiftLeftLogical => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpBitwiseOr => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpBitwiseXor => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpBitwiseAnd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpNot => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpBitFieldInsert => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpBitFieldSExtract => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpBitFieldUExtract => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpBitReverse => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpBitCount => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpDPdx => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpDPdy => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpFwidth => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpDPdxFine => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpDPdyFine => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpFwidthFine => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpDPdxCoarse => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpDPdyCoarse => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpFwidthCoarse => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpEmitVertex => &.{}, + .OpEndPrimitive => &.{}, + .OpEmitStreamVertex => &.{.{ .kind = .id_ref }}, + .OpEndStreamPrimitive => &.{.{ .kind = .id_ref }}, + .OpControlBarrier => &.{ .{ .kind = .id_scope }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics } }, + .OpMemoryBarrier => &.{ .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics } }, + .OpAtomicLoad => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics } }, + .OpAtomicStore => &.{ .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicExchange => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicCompareExchange => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpAtomicCompareExchangeWeak => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpAtomicIIncrement => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics } }, + .OpAtomicIDecrement => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics } }, + .OpAtomicIAdd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicISub => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicSMin => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicUMin => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicSMax => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicUMax => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicAnd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicOr => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicXor => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpPhi => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic } }, + .OpLoopMerge => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .loop_control } }, + .OpSelectionMerge => &.{ .{ .kind = .id_ref }, .{ .kind = .selection_control } }, + .OpLabel => &.{.{ .kind = .id_result }}, + .OpBranch => &.{.{ .kind = .id_ref }}, + .OpBranchConditional => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .literal_integer, .quantifier = .variadic } }, + .OpSwitch => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .pair_literal_integer_id_ref, .quantifier = .variadic } }, + .OpKill => &.{}, + .OpReturn => &.{}, + .OpReturnValue => &.{.{ .kind = .id_ref }}, + .OpUnreachable => &.{}, + .OpLifetimeStart => &.{ .{ .kind = .id_ref }, .{ .kind = .literal_integer } }, + .OpLifetimeStop => &.{ .{ .kind = .id_ref }, .{ .kind = .literal_integer } }, + .OpGroupAsyncCopy => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupWaitEvents => &.{ .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupAll => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupAny => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupBroadcast => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupIAdd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupFAdd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupFMin => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupUMin => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupSMin => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupFMax => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupUMax => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupSMax => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpReadPipe => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpWritePipe => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpReservedReadPipe => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpReservedWritePipe => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpReserveReadPipePackets => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpReserveWritePipePackets => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpCommitReadPipe => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpCommitWritePipe => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpIsValidReserveId => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpGetNumPipePackets => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGetMaxPipePackets => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupReserveReadPipePackets => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupReserveWritePipePackets => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupCommitReadPipe => &.{ .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupCommitWritePipe => &.{ .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpEnqueueMarker => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpEnqueueKernel => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpGetKernelNDrangeSubGroupCount => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGetKernelNDrangeMaxSubGroupSize => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGetKernelWorkGroupSize => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGetKernelPreferredWorkGroupSizeMultiple => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRetainEvent => &.{.{ .kind = .id_ref }}, + .OpReleaseEvent => &.{.{ .kind = .id_ref }}, + .OpCreateUserEvent => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpIsValidEvent => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSetUserEventStatus => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpCaptureEventProfilingInfo => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGetDefaultQueue => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpBuildNDRange => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpImageSparseSampleImplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSparseSampleExplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands } }, + .OpImageSparseSampleDrefImplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSparseSampleDrefExplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands } }, + .OpImageSparseSampleProjImplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSparseSampleProjExplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands } }, + .OpImageSparseSampleProjDrefImplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSparseSampleProjDrefExplicitLod => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands } }, + .OpImageSparseFetch => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSparseGather => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSparseDrefGather => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpImageSparseTexelsResident => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpNoLine => &.{}, + .OpAtomicFlagTestAndSet => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics } }, + .OpAtomicFlagClear => &.{ .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics } }, + .OpImageSparseRead => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .image_operands, .quantifier = .optional } }, + .OpSizeOf => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpTypePipeStorage => &.{.{ .kind = .id_result }}, + .OpConstantPipeStorage => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .literal_integer }, .{ .kind = .literal_integer }, .{ .kind = .literal_integer } }, + .OpCreatePipeFromPipeStorage => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpGetKernelLocalSizeForSubgroupCount => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGetKernelMaxNumSubgroups => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpTypeNamedBarrier => &.{.{ .kind = .id_result }}, + .OpNamedBarrierInitialize => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpMemoryNamedBarrier => &.{ .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics } }, + .OpModuleProcessed => &.{.{ .kind = .literal_string }}, + .OpExecutionModeId => &.{ .{ .kind = .id_ref }, .{ .kind = .execution_mode } }, + .OpDecorateId => &.{ .{ .kind = .id_ref }, .{ .kind = .decoration } }, + .OpGroupNonUniformElect => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope } }, + .OpGroupNonUniformAll => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupNonUniformAny => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupNonUniformAllEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupNonUniformBroadcast => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupNonUniformBroadcastFirst => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupNonUniformBallot => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupNonUniformInverseBallot => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupNonUniformBallotBitExtract => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupNonUniformBallotBitCount => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupNonUniformBallotFindLSB => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupNonUniformBallotFindMSB => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref } }, + .OpGroupNonUniformShuffle => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupNonUniformShuffleXor => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupNonUniformShuffleUp => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupNonUniformShuffleDown => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupNonUniformIAdd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformFAdd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformIMul => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformFMul => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformSMin => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformUMin => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformFMin => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformSMax => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformUMax => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformFMax => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformBitwiseAnd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformBitwiseOr => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformBitwiseXor => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformLogicalAnd => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformLogicalOr => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformLogicalXor => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpGroupNonUniformQuadBroadcast => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupNonUniformQuadSwap => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpCopyLogical => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpPtrEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpPtrNotEqual => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpPtrDiff => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpColorAttachmentReadEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpDepthAttachmentReadEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpStencilAttachmentReadEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpTerminateInvocation => &.{}, + .OpTypeUntypedPointerKHR => &.{ .{ .kind = .id_result }, .{ .kind = .storage_class } }, + .OpUntypedVariableKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .storage_class }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpUntypedAccessChainKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpUntypedInBoundsAccessChainKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpSubgroupBallotKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSubgroupFirstInvocationKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpUntypedPtrAccessChainKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpUntypedInBoundsPtrAccessChainKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpUntypedArrayLengthKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .literal_integer } }, + .OpUntypedPrefetchKHR => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpFmaKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpSubgroupAllKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSubgroupAnyKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSubgroupAllEqualKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpGroupNonUniformRotateKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpSubgroupReadInvocationKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpExtInstWithForwardRefsKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .literal_ext_inst_integer }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .OpUntypedGroupAsyncCopyKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .memory_access, .quantifier = .optional }, .{ .kind = .memory_access, .quantifier = .optional } }, + .OpTraceRayKHR => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpExecuteCallableKHR => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpConvertUToAccelerationStructureKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpIgnoreIntersectionKHR => &.{}, + .OpTerminateRayKHR => &.{}, + .OpSDot => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .packed_vector_format, .quantifier = .optional } }, + .OpUDot => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .packed_vector_format, .quantifier = .optional } }, + .OpSUDot => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .packed_vector_format, .quantifier = .optional } }, + .OpSDotAccSat => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .packed_vector_format, .quantifier = .optional } }, + .OpUDotAccSat => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .packed_vector_format, .quantifier = .optional } }, + .OpSUDotAccSat => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .packed_vector_format, .quantifier = .optional } }, + .OpTypeCooperativeMatrixKHR => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpCooperativeMatrixLoadKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .memory_access, .quantifier = .optional } }, + .OpCooperativeMatrixStoreKHR => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .memory_access, .quantifier = .optional } }, + .OpCooperativeMatrixMulAddKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .cooperative_matrix_operands, .quantifier = .optional } }, + .OpCooperativeMatrixLengthKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpConstantCompositeReplicateEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpSpecConstantCompositeReplicateEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpCompositeConstructReplicateEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpTypeRayQueryKHR => &.{.{ .kind = .id_result }}, + .OpRayQueryInitializeKHR => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryTerminateKHR => &.{.{ .kind = .id_ref }}, + .OpRayQueryGenerateIntersectionKHR => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryConfirmIntersectionKHR => &.{.{ .kind = .id_ref }}, + .OpRayQueryProceedKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionTypeKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpReadClockKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope } }, + .OpGroupNonUniformQuadAllKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpGroupNonUniformQuadAnyKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpTypeBufferEXT => &.{ .{ .kind = .id_result }, .{ .kind = .storage_class } }, + .OpBufferPointerEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpAbortKHR => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpUntypedImageTexelPointerEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpMemberDecorateIdEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .literal_integer }, .{ .kind = .decoration } }, + .OpConstantSizeOfEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpConstantDataKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .literal_integer, .quantifier = .variadic } }, + .OpSpecConstantDataKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .literal_integer, .quantifier = .variadic } }, + .OpPoisonKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpFreezeKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpTypeVectorIdEXT => &.{ .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpEmitMeshTasksEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpSetMeshOutputsEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpGroupNonUniformPartitionEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectRecordFromQueryEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpHitObjectRecordMissEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpHitObjectRecordMissMotionEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpHitObjectGetIntersectionTriangleVertexPositionsEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetRayFlagsEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectSetShaderBindingTableRecordIndexEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpHitObjectReorderExecuteShaderEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpHitObjectTraceReorderExecuteEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpHitObjectTraceMotionReorderExecuteEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpTypeHitObjectEXT => &.{.{ .kind = .id_result }}, + .OpReorderThreadWithHintEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpReorderThreadWithHitObjectEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .optional }, .{ .kind = .id_ref, .quantifier = .optional } }, + .OpHitObjectTraceRayEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpHitObjectTraceRayMotionEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpHitObjectRecordEmptyEXT => &.{.{ .kind = .id_ref }}, + .OpHitObjectExecuteShaderEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpHitObjectGetCurrentTimeEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetAttributesEXT => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpHitObjectGetHitKindEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetPrimitiveIndexEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetGeometryIndexEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetInstanceIdEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetInstanceCustomIndexEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetObjectRayOriginEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetObjectRayDirectionEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetWorldRayDirectionEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetWorldRayOriginEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetObjectToWorldEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetWorldToObjectEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetRayTMaxEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpReportIntersectionKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpTypeAccelerationStructureKHR => &.{.{ .kind = .id_result }}, + .OpHitObjectGetRayTMinEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetShaderBindingTableRecordIndexEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectGetShaderRecordBufferHandleEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectIsEmptyEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectIsHitEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpHitObjectIsMissEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpBeginInvocationInterlockEXT => &.{}, + .OpEndInvocationInterlockEXT => &.{}, + .OpDemoteToHelperInvocation => &.{}, + .OpIsHelperInvocationEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result } }, + .OpAtomicFMinEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAtomicFMaxEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpAssumeTrueKHR => &.{.{ .kind = .id_ref }}, + .OpExpectKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpDecorateString => &.{ .{ .kind = .id_ref }, .{ .kind = .decoration } }, + .OpMemberDecorateString => &.{ .{ .kind = .id_ref }, .{ .kind = .literal_integer }, .{ .kind = .decoration } }, + .OpRayQueryGetRayTMinKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpRayQueryGetRayFlagsKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionTKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionInstanceCustomIndexKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionInstanceIdKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionGeometryIndexKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionPrimitiveIndexKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionBarycentricsKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionFrontFaceKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionCandidateAABBOpaqueKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionObjectRayDirectionKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionObjectRayOriginKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetWorldRayDirectionKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpRayQueryGetWorldRayOriginKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionObjectToWorldKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpRayQueryGetIntersectionWorldToObjectKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .OpAtomicFAddEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref }, .{ .kind = .id_scope }, .{ .kind = .id_memory_semantics }, .{ .kind = .id_ref } }, + .OpArithmeticFenceEXT => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_ref } }, + .OpGroupIMulKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupFMulKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupBitwiseAndKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupBitwiseOrKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupBitwiseXorKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupLogicalAndKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupLogicalOrKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + .OpGroupLogicalXorKHR => &.{ .{ .kind = .id_result_type }, .{ .kind = .id_result }, .{ .kind = .id_scope }, .{ .kind = .group_operation }, .{ .kind = .id_ref } }, + }; + } + + pub fn Operands(comptime opcode: Opcode) type { + return switch (opcode) { .OpNop => void, .OpUndef => struct { id_result_type: Id, id_result: Id }, .OpSourceContinued => struct { continued_source: LiteralString }, @@ -2504,17 +2451,6 @@ pub const Opcode = enum(u16) { .OpColorAttachmentReadEXT => struct { id_result_type: Id, id_result: Id, attachment: Id, sample: ?Id = null }, .OpDepthAttachmentReadEXT => struct { id_result_type: Id, id_result: Id, sample: ?Id = null }, .OpStencilAttachmentReadEXT => struct { id_result_type: Id, id_result: Id, sample: ?Id = null }, - .OpTypeTensorARM => struct { id_result: Id, element_type: Id, rank: ?Id = null, shape: ?Id = null }, - .OpTensorReadARM => struct { id_result_type: Id, id_result: Id, tensor: Id, coordinates: Id, tensor_operands: ?TensorOperands.Extended = null }, - .OpTensorWriteARM => struct { tensor: Id, coordinates: Id, object: Id, tensor_operands: ?TensorOperands.Extended = null }, - .OpTensorQuerySizeARM => struct { id_result_type: Id, id_result: Id, tensor: Id, dimension: Id }, - .OpGraphConstantARM => struct { id_result_type: Id, id_result: Id, graph_constant_id: LiteralInteger }, - .OpGraphEntryPointARM => struct { graph: Id, name: LiteralString, interface: []const Id = &.{} }, - .OpGraphARM => struct { id_result_type: Id, id_result: Id }, - .OpGraphInputARM => struct { id_result_type: Id, id_result: Id, input_index: Id, element_index: []const Id = &.{} }, - .OpGraphSetOutputARM => struct { value: Id, output_index: Id, element_index: []const Id = &.{} }, - .OpGraphEndARM => void, - .OpTypeGraphARM => struct { id_result: Id, num_inputs: LiteralInteger, in_out_types: []const Id = &.{} }, .OpTerminateInvocation => void, .OpTypeUntypedPointerKHR => struct { id_result: Id, storage_class: StorageClass }, .OpUntypedVariableKHR => struct { id_result_type: Id, id_result: Id, storage_class: StorageClass, data_type: ?Id = null, initializer: ?Id = null }, @@ -2560,37 +2496,7 @@ pub const Opcode = enum(u16) { .OpRayQueryConfirmIntersectionKHR => struct { ray_query: Id }, .OpRayQueryProceedKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id }, .OpRayQueryGetIntersectionTypeKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, - .OpImageSampleWeightedQCOM => struct { id_result_type: Id, id_result: Id, texture: Id, coordinates: Id, weights: Id }, - .OpImageBoxFilterQCOM => struct { id_result_type: Id, id_result: Id, texture: Id, coordinates: Id, box_size: Id }, - .OpImageBlockMatchSSDQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id }, - .OpImageBlockMatchSADQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id }, - .OpBitCastArrayQCOM => struct { id_result_type: Id, id_result: Id, source_array: Id }, - .OpImageBlockMatchWindowSSDQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id }, - .OpImageBlockMatchWindowSADQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id }, - .OpImageBlockMatchGatherSSDQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id }, - .OpImageBlockMatchGatherSADQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id }, - .OpCompositeConstructCoopMatQCOM => struct { id_result_type: Id, id_result: Id, source_array: Id }, - .OpCompositeExtractCoopMatQCOM => struct { id_result_type: Id, id_result: Id, source_cooperative_matrix: Id }, - .OpExtractSubArrayQCOM => struct { id_result_type: Id, id_result: Id, source_array: Id, index: Id }, - .OpGroupIAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, - .OpGroupFAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, - .OpGroupFMinNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, - .OpGroupUMinNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, - .OpGroupSMinNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, - .OpGroupFMaxNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, - .OpGroupUMaxNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, - .OpGroupSMaxNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, - .OpFragmentMaskFetchAMD => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id }, - .OpFragmentFetchAMD => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id, fragment_index: Id }, .OpReadClockKHR => struct { id_result_type: Id, id_result: Id, scope: Id }, - .OpAllocateNodePayloadsAMDX => struct { id_result_type: Id, id_result: Id, visibility: Id, payload_count: Id, node_index: Id }, - .OpEnqueueNodePayloadsAMDX => struct { payload_array: Id }, - .OpTypeNodePayloadArrayAMDX => struct { id_result: Id, payload_type: Id }, - .OpFinishWritingNodePayloadAMDX => struct { id_result_type: Id, id_result: Id, payload: Id }, - .OpNodePayloadArrayLengthAMDX => struct { id_result_type: Id, id_result: Id, payload_array: Id }, - .OpIsNodePayloadValidAMDX => struct { id_result_type: Id, id_result: Id, payload_type: Id, node_index: Id }, - .OpConstantStringAMDX => struct { id_result: Id, literal_string: LiteralString }, - .OpSpecConstantStringAMDX => struct { id_result: Id, literal_string: LiteralString }, .OpGroupNonUniformQuadAllKHR => struct { id_result_type: Id, id_result: Id, predicate: Id }, .OpGroupNonUniformQuadAnyKHR => struct { id_result_type: Id, id_result: Id, predicate: Id }, .OpTypeBufferEXT => struct { id_result: Id, storage_class: StorageClass }, @@ -2603,54 +2509,10 @@ pub const Opcode = enum(u16) { .OpSpecConstantDataKHR => struct { id_result_type: Id, id_result: Id, data: []const LiteralInteger = &.{} }, .OpPoisonKHR => struct { id_result_type: Id, id_result: Id }, .OpFreezeKHR => struct { id_result_type: Id, id_result: Id, value: Id }, - .OpHitObjectRecordHitMotionNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_offset: Id, sbt_record_stride: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id, hit_object_attributes: Id }, - .OpHitObjectRecordHitWithIndexMotionNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id, hit_object_attributes: Id }, - .OpHitObjectRecordMissMotionNV => struct { hit_object: Id, sbt_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id }, - .OpHitObjectGetWorldToObjectNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetObjectToWorldNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetObjectRayDirectionNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetObjectRayOriginNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectTraceRayMotionNV => struct { hit_object: Id, acceleration_structure: Id, ray_flags: Id, cullmask: Id, sbt_record_offset: Id, sbt_record_stride: Id, miss_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, time: Id, payload: Id }, - .OpHitObjectGetShaderRecordBufferHandleNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetShaderBindingTableRecordIndexNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectRecordEmptyNV => struct { hit_object: Id }, - .OpHitObjectTraceRayNV => struct { hit_object: Id, acceleration_structure: Id, ray_flags: Id, cullmask: Id, sbt_record_offset: Id, sbt_record_stride: Id, miss_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, payload: Id }, - .OpHitObjectRecordHitNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_offset: Id, sbt_record_stride: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, hit_object_attributes: Id }, - .OpHitObjectRecordHitWithIndexNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, hit_object_attributes: Id }, - .OpHitObjectRecordMissNV => struct { hit_object: Id, sbt_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id }, - .OpHitObjectExecuteShaderNV => struct { hit_object: Id, payload: Id }, - .OpHitObjectGetCurrentTimeNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetAttributesNV => struct { hit_object: Id, hit_object_attribute: Id }, - .OpHitObjectGetHitKindNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetPrimitiveIndexNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetGeometryIndexNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetInstanceIdNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetInstanceCustomIndexNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetWorldRayDirectionNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetWorldRayOriginNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetRayTMaxNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetRayTMinNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectIsEmptyNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectIsHitNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectIsMissNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpReorderThreadWithHitObjectNV => struct { hit_object: Id, hint: ?Id = null, bits: ?Id = null }, - .OpReorderThreadWithHintNV => struct { hint: Id, bits: Id }, - .OpTypeHitObjectNV => struct { id_result: Id }, - .OpImageSampleFootprintNV => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, granularity: Id, coarse: Id, image_operands: ?ImageOperands.Extended = null }, .OpTypeVectorIdEXT => struct { id_result: Id, component_type: Id, component_count: Id }, - .OpCooperativeVectorMatrixMulNV => struct { id_result_type: Id, id_result: Id, input: Id, input_interpretation: Id, matrix: Id, matrix_offset: Id, matrix_interpretation: Id, m: Id, k: Id, memory_layout: Id, transpose: Id, matrix_stride: ?Id = null, cooperative_matrix_operands: ?CooperativeMatrixOperands = null }, - .OpCooperativeVectorOuterProductAccumulateNV => struct { pointer: Id, offset: Id, a: Id, b: Id, memory_layout: Id, matrix_interpretation: Id, matrix_stride: ?Id = null }, - .OpCooperativeVectorReduceSumAccumulateNV => struct { pointer: Id, offset: Id, v: Id }, - .OpCooperativeVectorMatrixMulAddNV => struct { id_result_type: Id, id_result: Id, input: Id, input_interpretation: Id, matrix: Id, matrix_offset: Id, matrix_interpretation: Id, bias: Id, bias_offset: Id, bias_interpretation: Id, m: Id, k: Id, memory_layout: Id, transpose: Id, matrix_stride: ?Id = null, cooperative_matrix_operands: ?CooperativeMatrixOperands = null }, - .OpCooperativeMatrixConvertNV => struct { id_result_type: Id, id_result: Id, matrix: Id }, .OpEmitMeshTasksEXT => struct { group_count_x: Id, group_count_y: Id, group_count_z: Id, payload: ?Id = null }, .OpSetMeshOutputsEXT => struct { vertex_count: Id, primitive_count: Id }, .OpGroupNonUniformPartitionEXT => struct { id_result_type: Id, id_result: Id, value: Id }, - .OpWritePackedPrimitiveIndices4x8NV => struct { index_offset: Id, packed_indices: Id }, - .OpFetchMicroTriangleVertexPositionNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id }, - .OpFetchMicroTriangleVertexBarycentricNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id }, - .OpCooperativeVectorLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, offset: Id, memory_access: ?MemoryAccess.Extended = null }, - .OpCooperativeVectorStoreNV => struct { pointer: Id, offset: Id, object: Id, memory_access: ?MemoryAccess.Extended = null }, .OpHitObjectRecordFromQueryEXT => struct { hit_object: Id, ray_query: Id, sbt_record_index: Id, hit_object_attributes: Id }, .OpHitObjectRecordMissEXT => struct { hit_object: Id, ray_flags: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id }, .OpHitObjectRecordMissMotionEXT => struct { hit_object: Id, ray_flags: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, current_time: Id }, @@ -2682,103 +2544,24 @@ pub const Opcode = enum(u16) { .OpHitObjectGetWorldToObjectEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpHitObjectGetRayTMaxEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpReportIntersectionKHR => struct { id_result_type: Id, id_result: Id, hit: Id, hit_kind: Id }, - .OpIgnoreIntersectionNV => void, - .OpTerminateRayNV => void, - .OpTraceNV => struct { accel: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, payload_id: Id }, - .OpTraceMotionNV => struct { accel: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, time: Id, payload_id: Id }, - .OpTraceRayMotionNV => struct { accel: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, time: Id, payload: Id }, .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, .OpTypeAccelerationStructureKHR => struct { id_result: Id }, - .OpExecuteCallableNV => struct { sbt_index: Id, callable_data_id: Id }, - .OpRayQueryGetIntersectionClusterIdNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, - .OpHitObjectGetClusterIdNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpHitObjectGetRayTMinEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpHitObjectGetShaderBindingTableRecordIndexEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpHitObjectGetShaderRecordBufferHandleEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpHitObjectIsEmptyEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpHitObjectIsHitEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, .OpHitObjectIsMissEXT => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpTypeCooperativeMatrixNV => struct { id_result: Id, component_type: Id, execution: Id, rows: Id, columns: Id }, - .OpCooperativeMatrixLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, stride: Id, column_major: Id, memory_access: ?MemoryAccess.Extended = null }, - .OpCooperativeMatrixStoreNV => struct { pointer: Id, object: Id, stride: Id, column_major: Id, memory_access: ?MemoryAccess.Extended = null }, - .OpCooperativeMatrixMulAddNV => struct { id_result_type: Id, id_result: Id, a: Id, b: Id, c: Id }, - .OpCooperativeMatrixLengthNV => struct { id_result_type: Id, id_result: Id, type: Id }, .OpBeginInvocationInterlockEXT => void, .OpEndInvocationInterlockEXT => void, - .OpCooperativeMatrixReduceNV => struct { id_result_type: Id, id_result: Id, matrix: Id, reduce: CooperativeMatrixReduce, combine_func: Id }, - .OpCooperativeMatrixLoadTensorNV => struct { id_result_type: Id, id_result: Id, pointer: Id, object: Id, tensor_layout: Id, memory_operand: MemoryAccess.Extended, tensor_addressing_operands: TensorAddressingOperands.Extended }, - .OpCooperativeMatrixStoreTensorNV => struct { pointer: Id, object: Id, tensor_layout: Id, memory_operand: MemoryAccess.Extended, tensor_addressing_operands: TensorAddressingOperands.Extended }, - .OpCooperativeMatrixPerElementOpNV => struct { id_result_type: Id, id_result: Id, matrix: Id, func: Id, operands: []const Id = &.{} }, - .OpTypeTensorLayoutNV => struct { id_result: Id, dim: Id, clamp_mode: Id }, - .OpTypeTensorViewNV => struct { id_result: Id, dim: Id, has_dimensions: Id, p: []const Id = &.{} }, - .OpCreateTensorLayoutNV => struct { id_result_type: Id, id_result: Id }, - .OpTensorLayoutSetDimensionNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, dim: []const Id = &.{} }, - .OpTensorLayoutSetStrideNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, stride: []const Id = &.{} }, - .OpTensorLayoutSliceNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, operands: []const Id = &.{} }, - .OpTensorLayoutSetClampValueNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, value: Id }, - .OpCreateTensorViewNV => struct { id_result_type: Id, id_result: Id }, - .OpTensorViewSetDimensionNV => struct { id_result_type: Id, id_result: Id, tensor_view: Id, dim: []const Id = &.{} }, - .OpTensorViewSetStrideNV => struct { id_result_type: Id, id_result: Id, tensor_view: Id, stride: []const Id = &.{} }, .OpDemoteToHelperInvocation => void, .OpIsHelperInvocationEXT => struct { id_result_type: Id, id_result: Id }, - .OpTensorViewSetClipNV => struct { id_result_type: Id, id_result: Id, tensor_view: Id, clip_row_offset: Id, clip_row_span: Id, clip_col_offset: Id, clip_col_span: Id }, - .OpTensorLayoutSetBlockSizeNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, block_size: []const Id = &.{} }, - .OpCooperativeMatrixTransposeNV => struct { id_result_type: Id, id_result: Id, matrix: Id }, - .OpConvertUToImageNV => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpConvertUToSamplerNV => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpConvertImageToUNV => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpConvertSamplerToUNV => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpConvertUToSampledImageNV => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpConvertSampledImageToUNV => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpSamplerImageAddressingModeNV => struct { bit_width: LiteralInteger }, - .OpRawAccessChainNV => struct { id_result_type: Id, id_result: Id, base: Id, byte_stride: Id, element_index: Id, byte_offset: Id, raw_access_chain_operands: ?RawAccessChainOperands = null }, - .OpRayQueryGetIntersectionSpherePositionNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, - .OpRayQueryGetIntersectionSphereRadiusNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, - .OpRayQueryGetIntersectionLSSPositionsNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, - .OpRayQueryGetIntersectionLSSRadiiNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, - .OpRayQueryGetIntersectionLSSHitValueNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, - .OpHitObjectGetSpherePositionNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetSphereRadiusNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetLSSPositionsNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectGetLSSRadiiNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectIsSphereHitNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpHitObjectIsLSSHitNV => struct { id_result_type: Id, id_result: Id, hit_object: Id }, - .OpRayQueryIsSphereHitNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, - .OpRayQueryIsLSSHitNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, - .OpSubgroupShuffleINTEL => struct { id_result_type: Id, id_result: Id, data: Id, invocation_id: Id }, - .OpSubgroupShuffleDownINTEL => struct { id_result_type: Id, id_result: Id, current: Id, next: Id, delta: Id }, - .OpSubgroupShuffleUpINTEL => struct { id_result_type: Id, id_result: Id, previous: Id, current: Id, delta: Id }, - .OpSubgroupShuffleXorINTEL => struct { id_result_type: Id, id_result: Id, data: Id, value: Id }, - .OpSubgroupBlockReadINTEL => struct { id_result_type: Id, id_result: Id, ptr: Id }, - .OpSubgroupBlockWriteINTEL => struct { ptr: Id, data: Id }, - .OpSubgroupImageBlockReadINTEL => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id }, - .OpSubgroupImageBlockWriteINTEL => struct { image: Id, coordinate: Id, data: Id }, - .OpSubgroupImageMediaBlockReadINTEL => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id, width: Id, height: Id }, - .OpSubgroupImageMediaBlockWriteINTEL => struct { image: Id, coordinate: Id, width: Id, height: Id, data: Id }, - .OpUCountLeadingZerosINTEL => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpUCountTrailingZerosINTEL => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpAbsISubINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpAbsUSubINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpIAddSatINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpUAddSatINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpIAverageINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpUAverageINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpIAverageRoundedINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpUAverageRoundedINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpISubSatINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpUSubSatINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpIMul32x16INTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, - .OpUMul32x16INTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id }, .OpAtomicFMinEXT => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id }, .OpAtomicFMaxEXT => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id }, .OpAssumeTrueKHR => struct { condition: Id }, .OpExpectKHR => struct { id_result_type: Id, id_result: Id, value: Id, expected_value: Id }, .OpDecorateString => struct { target: Id, decoration: Decoration.Extended }, .OpMemberDecorateString => struct { struct_type: Id, member: LiteralInteger, decoration: Decoration.Extended }, - .OpVariableLengthArrayINTEL => struct { id_result_type: Id, id_result: Id, length: Id }, - .OpSaveMemoryINTEL => struct { id_result_type: Id, id_result: Id }, - .OpRestoreMemoryINTEL => struct { ptr: Id }, - .OpLoopControlINTEL => struct { loop_control_parameters: []const LiteralInteger = &.{} }, .OpRayQueryGetRayTMinKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id }, .OpRayQueryGetRayFlagsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id }, .OpRayQueryGetIntersectionTKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, @@ -2797,32 +2580,7 @@ pub const Opcode = enum(u16) { .OpRayQueryGetIntersectionObjectToWorldKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, .OpRayQueryGetIntersectionWorldToObjectKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id }, .OpAtomicFAddEXT => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id }, - .OpTypeBufferSurfaceINTEL => struct { id_result: Id, access_qualifier: AccessQualifier }, - .OpTypeStructContinuedINTEL => struct { id_ref: []const Id = &.{} }, - .OpConstantCompositeContinuedINTEL => struct { constituents: []const Id = &.{} }, - .OpSpecConstantCompositeContinuedINTEL => struct { constituents: []const Id = &.{} }, - .OpCompositeConstructContinuedINTEL => struct { id_result_type: Id, id_result: Id, constituents: []const Id = &.{} }, - .OpConvertFToBF16INTEL => struct { id_result_type: Id, id_result: Id, float_value: Id }, - .OpConvertBF16ToFINTEL => struct { id_result_type: Id, id_result: Id, b_float16_value: Id }, - .OpControlBarrierArriveINTEL => struct { execution: Id, memory: Id, semantics: Id }, - .OpControlBarrierWaitINTEL => struct { execution: Id, memory: Id, semantics: Id }, .OpArithmeticFenceEXT => struct { id_result_type: Id, id_result: Id, target: Id }, - .OpSubgroupBlockPrefetchINTEL => struct { ptr: Id, num_bytes: Id, memory_access: ?MemoryAccess.Extended = null }, - .OpSubgroup2DBlockLoadINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id, dst_pointer: Id }, - .OpSubgroup2DBlockLoadTransformINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id, dst_pointer: Id }, - .OpSubgroup2DBlockLoadTransposeINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id, dst_pointer: Id }, - .OpSubgroup2DBlockPrefetchINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id }, - .OpSubgroup2DBlockStoreINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_pointer: Id, dst_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id }, - .OpSubgroupMatrixMultiplyAccumulateINTEL => struct { id_result_type: Id, id_result: Id, k_dim: Id, matrix_a: Id, matrix_b: Id, matrix_c: Id, matrix_multiply_accumulate_operands: ?MatrixMultiplyAccumulateOperands = null }, - .OpBitwiseFunctionINTEL => struct { id_result_type: Id, id_result: Id, a: Id, b: Id, c: Id, lut_index: Id }, - .OpUntypedVariableLengthArrayINTEL => struct { id_result_type: Id, id_result: Id, element_type: Id, length: Id }, - .OpConditionalExtensionINTEL => struct { condition: Id, name: LiteralString }, - .OpConditionalEntryPointINTEL => struct { condition: Id, execution_model: ExecutionModel, entry_point: Id, name: LiteralString, interface: []const Id = &.{} }, - .OpConditionalCapabilityINTEL => struct { condition: Id, capability: Capability }, - .OpSpecConstantTargetINTEL => struct { id_result_type: Id, id_result: Id, target: LiteralInteger, features: []const LiteralInteger = &.{} }, - .OpSpecConstantArchitectureINTEL => struct { id_result_type: Id, id_result: Id, category: LiteralInteger, family: LiteralInteger, opcode: LiteralInteger, architecture: LiteralInteger }, - .OpSpecConstantCapabilitiesINTEL => struct { id_result_type: Id, id_result: Id, capabilities: []const Capability = &.{} }, - .OpConditionalCopyObjectINTEL => struct { id_result_type: Id, id_result: Id, id_ref: []const Id = &.{} }, .OpGroupIMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, .OpGroupFMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, .OpGroupBitwiseAndKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, @@ -2831,702 +2589,168 @@ pub const Opcode = enum(u16) { .OpGroupLogicalAndKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, .OpGroupLogicalOrKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, .OpGroupLogicalXorKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id }, - .OpRoundFToTF32INTEL => struct { id_result_type: Id, id_result: Id, float_value: Id }, - .OpMaskedGatherINTEL => struct { id_result_type: Id, id_result: Id, ptr_vector: Id, alignment: LiteralInteger, mask: Id, fill_empty: Id }, - .OpMaskedScatterINTEL => struct { input_vector: Id, ptr_vector: Id, alignment: LiteralInteger, mask: Id }, - .OpConvertHandleToImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpConvertHandleToSamplerINTEL => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpConvertHandleToSampledImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id }, - .OpFDot2MixAcc32VALVE => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id }, - .OpFDot2MixAcc16VALVE => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id }, - .OpFDot4MixAcc32VALVE => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id }, }; } - pub fn class(self: Opcode) Class { - return switch (self) { - .OpNop => .miscellaneous, - .OpUndef => .miscellaneous, - .OpSourceContinued => .debug, - .OpSource => .debug, - .OpSourceExtension => .debug, - .OpName => .debug, - .OpMemberName => .debug, - .OpString => .debug, - .OpLine => .debug, - .OpExtension => .extension, - .OpExtInstImport => .extension, - .OpExtInst => .extension, - .OpMemoryModel => .mode_setting, - .OpEntryPoint => .mode_setting, - .OpExecutionMode => .mode_setting, - .OpCapability => .mode_setting, - .OpTypeVoid => .type_declaration, - .OpTypeBool => .type_declaration, - .OpTypeInt => .type_declaration, - .OpTypeFloat => .type_declaration, - .OpTypeVector => .type_declaration, - .OpTypeMatrix => .type_declaration, - .OpTypeImage => .type_declaration, - .OpTypeSampler => .type_declaration, - .OpTypeSampledImage => .type_declaration, - .OpTypeArray => .type_declaration, - .OpTypeRuntimeArray => .type_declaration, - .OpTypeStruct => .type_declaration, - .OpTypeOpaque => .type_declaration, - .OpTypePointer => .type_declaration, - .OpTypeFunction => .type_declaration, - .OpTypeEvent => .type_declaration, - .OpTypeDeviceEvent => .type_declaration, - .OpTypeReserveId => .type_declaration, - .OpTypeQueue => .type_declaration, - .OpTypePipe => .type_declaration, - .OpTypeForwardPointer => .type_declaration, - .OpConstantTrue => .constant_creation, - .OpConstantFalse => .constant_creation, - .OpConstant => .constant_creation, - .OpConstantComposite => .constant_creation, - .OpConstantSampler => .constant_creation, - .OpConstantNull => .constant_creation, - .OpSpecConstantTrue => .constant_creation, - .OpSpecConstantFalse => .constant_creation, - .OpSpecConstant => .constant_creation, - .OpSpecConstantComposite => .constant_creation, - .OpSpecConstantOp => .constant_creation, - .OpFunction => .function, - .OpFunctionParameter => .function, - .OpFunctionEnd => .function, - .OpFunctionCall => .function, - .OpVariable => .memory, - .OpImageTexelPointer => .memory, - .OpLoad => .memory, - .OpStore => .memory, - .OpCopyMemory => .memory, - .OpCopyMemorySized => .memory, - .OpAccessChain => .memory, - .OpInBoundsAccessChain => .memory, - .OpPtrAccessChain => .memory, - .OpArrayLength => .memory, - .OpGenericPtrMemSemantics => .memory, - .OpInBoundsPtrAccessChain => .memory, - .OpDecorate => .annotation, - .OpMemberDecorate => .annotation, - .OpDecorationGroup => .annotation, - .OpGroupDecorate => .annotation, - .OpGroupMemberDecorate => .annotation, - .OpVectorExtractDynamic => .composite, - .OpVectorInsertDynamic => .composite, - .OpVectorShuffle => .composite, - .OpCompositeConstruct => .composite, - .OpCompositeExtract => .composite, - .OpCompositeInsert => .composite, - .OpCopyObject => .composite, - .OpTranspose => .composite, - .OpSampledImage => .image, - .OpImageSampleImplicitLod => .image, - .OpImageSampleExplicitLod => .image, - .OpImageSampleDrefImplicitLod => .image, - .OpImageSampleDrefExplicitLod => .image, - .OpImageSampleProjImplicitLod => .image, - .OpImageSampleProjExplicitLod => .image, - .OpImageSampleProjDrefImplicitLod => .image, - .OpImageSampleProjDrefExplicitLod => .image, - .OpImageFetch => .image, - .OpImageGather => .image, - .OpImageDrefGather => .image, - .OpImageRead => .image, - .OpImageWrite => .image, - .OpImage => .image, - .OpImageQueryFormat => .image, - .OpImageQueryOrder => .image, - .OpImageQuerySizeLod => .image, - .OpImageQuerySize => .image, - .OpImageQueryLod => .image, - .OpImageQueryLevels => .image, - .OpImageQuerySamples => .image, - .OpConvertFToU => .conversion, - .OpConvertFToS => .conversion, - .OpConvertSToF => .conversion, - .OpConvertUToF => .conversion, - .OpUConvert => .conversion, - .OpSConvert => .conversion, - .OpFConvert => .conversion, - .OpQuantizeToF16 => .conversion, - .OpConvertPtrToU => .conversion, - .OpSatConvertSToU => .conversion, - .OpSatConvertUToS => .conversion, - .OpConvertUToPtr => .conversion, - .OpPtrCastToGeneric => .conversion, - .OpGenericCastToPtr => .conversion, - .OpGenericCastToPtrExplicit => .conversion, - .OpBitcast => .conversion, - .OpSNegate => .arithmetic, - .OpFNegate => .arithmetic, - .OpIAdd => .arithmetic, - .OpFAdd => .arithmetic, - .OpISub => .arithmetic, - .OpFSub => .arithmetic, - .OpIMul => .arithmetic, - .OpFMul => .arithmetic, - .OpUDiv => .arithmetic, - .OpSDiv => .arithmetic, - .OpFDiv => .arithmetic, - .OpUMod => .arithmetic, - .OpSRem => .arithmetic, - .OpSMod => .arithmetic, - .OpFRem => .arithmetic, - .OpFMod => .arithmetic, - .OpVectorTimesScalar => .arithmetic, - .OpMatrixTimesScalar => .arithmetic, - .OpVectorTimesMatrix => .arithmetic, - .OpMatrixTimesVector => .arithmetic, - .OpMatrixTimesMatrix => .arithmetic, - .OpOuterProduct => .arithmetic, - .OpDot => .arithmetic, - .OpIAddCarry => .arithmetic, - .OpISubBorrow => .arithmetic, - .OpUMulExtended => .arithmetic, - .OpSMulExtended => .arithmetic, - .OpAny => .relational_and_logical, - .OpAll => .relational_and_logical, - .OpIsNan => .relational_and_logical, - .OpIsInf => .relational_and_logical, - .OpIsFinite => .relational_and_logical, - .OpIsNormal => .relational_and_logical, - .OpSignBitSet => .relational_and_logical, - .OpLessOrGreater => .relational_and_logical, - .OpOrdered => .relational_and_logical, - .OpUnordered => .relational_and_logical, - .OpLogicalEqual => .relational_and_logical, - .OpLogicalNotEqual => .relational_and_logical, - .OpLogicalOr => .relational_and_logical, - .OpLogicalAnd => .relational_and_logical, - .OpLogicalNot => .relational_and_logical, - .OpSelect => .relational_and_logical, - .OpIEqual => .relational_and_logical, - .OpINotEqual => .relational_and_logical, - .OpUGreaterThan => .relational_and_logical, - .OpSGreaterThan => .relational_and_logical, - .OpUGreaterThanEqual => .relational_and_logical, - .OpSGreaterThanEqual => .relational_and_logical, - .OpULessThan => .relational_and_logical, - .OpSLessThan => .relational_and_logical, - .OpULessThanEqual => .relational_and_logical, - .OpSLessThanEqual => .relational_and_logical, - .OpFOrdEqual => .relational_and_logical, - .OpFUnordEqual => .relational_and_logical, - .OpFOrdNotEqual => .relational_and_logical, - .OpFUnordNotEqual => .relational_and_logical, - .OpFOrdLessThan => .relational_and_logical, - .OpFUnordLessThan => .relational_and_logical, - .OpFOrdGreaterThan => .relational_and_logical, - .OpFUnordGreaterThan => .relational_and_logical, - .OpFOrdLessThanEqual => .relational_and_logical, - .OpFUnordLessThanEqual => .relational_and_logical, - .OpFOrdGreaterThanEqual => .relational_and_logical, - .OpFUnordGreaterThanEqual => .relational_and_logical, - .OpShiftRightLogical => .bit, - .OpShiftRightArithmetic => .bit, - .OpShiftLeftLogical => .bit, - .OpBitwiseOr => .bit, - .OpBitwiseXor => .bit, - .OpBitwiseAnd => .bit, - .OpNot => .bit, - .OpBitFieldInsert => .bit, - .OpBitFieldSExtract => .bit, - .OpBitFieldUExtract => .bit, - .OpBitReverse => .bit, - .OpBitCount => .bit, - .OpDPdx => .derivative, - .OpDPdy => .derivative, - .OpFwidth => .derivative, - .OpDPdxFine => .derivative, - .OpDPdyFine => .derivative, - .OpFwidthFine => .derivative, - .OpDPdxCoarse => .derivative, - .OpDPdyCoarse => .derivative, - .OpFwidthCoarse => .derivative, - .OpEmitVertex => .primitive, - .OpEndPrimitive => .primitive, - .OpEmitStreamVertex => .primitive, - .OpEndStreamPrimitive => .primitive, - .OpControlBarrier => .barrier, - .OpMemoryBarrier => .barrier, - .OpAtomicLoad => .atomic, - .OpAtomicStore => .atomic, - .OpAtomicExchange => .atomic, - .OpAtomicCompareExchange => .atomic, - .OpAtomicCompareExchangeWeak => .atomic, - .OpAtomicIIncrement => .atomic, - .OpAtomicIDecrement => .atomic, - .OpAtomicIAdd => .atomic, - .OpAtomicISub => .atomic, - .OpAtomicSMin => .atomic, - .OpAtomicUMin => .atomic, - .OpAtomicSMax => .atomic, - .OpAtomicUMax => .atomic, - .OpAtomicAnd => .atomic, - .OpAtomicOr => .atomic, - .OpAtomicXor => .atomic, - .OpPhi => .control_flow, - .OpLoopMerge => .control_flow, - .OpSelectionMerge => .control_flow, - .OpLabel => .control_flow, - .OpBranch => .control_flow, - .OpBranchConditional => .control_flow, - .OpSwitch => .control_flow, - .OpKill => .control_flow, - .OpReturn => .control_flow, - .OpReturnValue => .control_flow, - .OpUnreachable => .control_flow, - .OpLifetimeStart => .control_flow, - .OpLifetimeStop => .control_flow, - .OpGroupAsyncCopy => .group, - .OpGroupWaitEvents => .group, - .OpGroupAll => .group, - .OpGroupAny => .group, - .OpGroupBroadcast => .group, - .OpGroupIAdd => .group, - .OpGroupFAdd => .group, - .OpGroupFMin => .group, - .OpGroupUMin => .group, - .OpGroupSMin => .group, - .OpGroupFMax => .group, - .OpGroupUMax => .group, - .OpGroupSMax => .group, - .OpReadPipe => .pipe, - .OpWritePipe => .pipe, - .OpReservedReadPipe => .pipe, - .OpReservedWritePipe => .pipe, - .OpReserveReadPipePackets => .pipe, - .OpReserveWritePipePackets => .pipe, - .OpCommitReadPipe => .pipe, - .OpCommitWritePipe => .pipe, - .OpIsValidReserveId => .pipe, - .OpGetNumPipePackets => .pipe, - .OpGetMaxPipePackets => .pipe, - .OpGroupReserveReadPipePackets => .pipe, - .OpGroupReserveWritePipePackets => .pipe, - .OpGroupCommitReadPipe => .pipe, - .OpGroupCommitWritePipe => .pipe, - .OpEnqueueMarker => .device_side_enqueue, - .OpEnqueueKernel => .device_side_enqueue, - .OpGetKernelNDrangeSubGroupCount => .device_side_enqueue, - .OpGetKernelNDrangeMaxSubGroupSize => .device_side_enqueue, - .OpGetKernelWorkGroupSize => .device_side_enqueue, - .OpGetKernelPreferredWorkGroupSizeMultiple => .device_side_enqueue, - .OpRetainEvent => .device_side_enqueue, - .OpReleaseEvent => .device_side_enqueue, - .OpCreateUserEvent => .device_side_enqueue, - .OpIsValidEvent => .device_side_enqueue, - .OpSetUserEventStatus => .device_side_enqueue, - .OpCaptureEventProfilingInfo => .device_side_enqueue, - .OpGetDefaultQueue => .device_side_enqueue, - .OpBuildNDRange => .device_side_enqueue, - .OpImageSparseSampleImplicitLod => .image, - .OpImageSparseSampleExplicitLod => .image, - .OpImageSparseSampleDrefImplicitLod => .image, - .OpImageSparseSampleDrefExplicitLod => .image, - .OpImageSparseSampleProjImplicitLod => .image, - .OpImageSparseSampleProjExplicitLod => .image, - .OpImageSparseSampleProjDrefImplicitLod => .image, - .OpImageSparseSampleProjDrefExplicitLod => .image, - .OpImageSparseFetch => .image, - .OpImageSparseGather => .image, - .OpImageSparseDrefGather => .image, - .OpImageSparseTexelsResident => .image, - .OpNoLine => .debug, - .OpAtomicFlagTestAndSet => .atomic, - .OpAtomicFlagClear => .atomic, - .OpImageSparseRead => .image, - .OpSizeOf => .miscellaneous, - .OpTypePipeStorage => .type_declaration, - .OpConstantPipeStorage => .pipe, - .OpCreatePipeFromPipeStorage => .pipe, - .OpGetKernelLocalSizeForSubgroupCount => .device_side_enqueue, - .OpGetKernelMaxNumSubgroups => .device_side_enqueue, - .OpTypeNamedBarrier => .type_declaration, - .OpNamedBarrierInitialize => .barrier, - .OpMemoryNamedBarrier => .barrier, - .OpModuleProcessed => .debug, - .OpExecutionModeId => .mode_setting, - .OpDecorateId => .annotation, - .OpGroupNonUniformElect => .non_uniform, - .OpGroupNonUniformAll => .non_uniform, - .OpGroupNonUniformAny => .non_uniform, - .OpGroupNonUniformAllEqual => .non_uniform, - .OpGroupNonUniformBroadcast => .non_uniform, - .OpGroupNonUniformBroadcastFirst => .non_uniform, - .OpGroupNonUniformBallot => .non_uniform, - .OpGroupNonUniformInverseBallot => .non_uniform, - .OpGroupNonUniformBallotBitExtract => .non_uniform, - .OpGroupNonUniformBallotBitCount => .non_uniform, - .OpGroupNonUniformBallotFindLSB => .non_uniform, - .OpGroupNonUniformBallotFindMSB => .non_uniform, - .OpGroupNonUniformShuffle => .non_uniform, - .OpGroupNonUniformShuffleXor => .non_uniform, - .OpGroupNonUniformShuffleUp => .non_uniform, - .OpGroupNonUniformShuffleDown => .non_uniform, - .OpGroupNonUniformIAdd => .non_uniform, - .OpGroupNonUniformFAdd => .non_uniform, - .OpGroupNonUniformIMul => .non_uniform, - .OpGroupNonUniformFMul => .non_uniform, - .OpGroupNonUniformSMin => .non_uniform, - .OpGroupNonUniformUMin => .non_uniform, - .OpGroupNonUniformFMin => .non_uniform, - .OpGroupNonUniformSMax => .non_uniform, - .OpGroupNonUniformUMax => .non_uniform, - .OpGroupNonUniformFMax => .non_uniform, - .OpGroupNonUniformBitwiseAnd => .non_uniform, - .OpGroupNonUniformBitwiseOr => .non_uniform, - .OpGroupNonUniformBitwiseXor => .non_uniform, - .OpGroupNonUniformLogicalAnd => .non_uniform, - .OpGroupNonUniformLogicalOr => .non_uniform, - .OpGroupNonUniformLogicalXor => .non_uniform, - .OpGroupNonUniformQuadBroadcast => .non_uniform, - .OpGroupNonUniformQuadSwap => .non_uniform, - .OpCopyLogical => .composite, - .OpPtrEqual => .memory, - .OpPtrNotEqual => .memory, - .OpPtrDiff => .memory, - .OpColorAttachmentReadEXT => .image, - .OpDepthAttachmentReadEXT => .image, - .OpStencilAttachmentReadEXT => .image, - .OpTypeTensorARM => .type_declaration, - .OpTensorReadARM => .tensor, - .OpTensorWriteARM => .tensor, - .OpTensorQuerySizeARM => .tensor, - .OpGraphConstantARM => .graph, - .OpGraphEntryPointARM => .graph, - .OpGraphARM => .graph, - .OpGraphInputARM => .graph, - .OpGraphSetOutputARM => .graph, - .OpGraphEndARM => .graph, - .OpTypeGraphARM => .type_declaration, - .OpTerminateInvocation => .control_flow, - .OpTypeUntypedPointerKHR => .type_declaration, - .OpUntypedVariableKHR => .memory, - .OpUntypedAccessChainKHR => .memory, - .OpUntypedInBoundsAccessChainKHR => .memory, - .OpSubgroupBallotKHR => .group, - .OpSubgroupFirstInvocationKHR => .group, - .OpUntypedPtrAccessChainKHR => .memory, - .OpUntypedInBoundsPtrAccessChainKHR => .memory, - .OpUntypedArrayLengthKHR => .memory, - .OpUntypedPrefetchKHR => .memory, - .OpFmaKHR => .arithmetic, - .OpSubgroupAllKHR => .group, - .OpSubgroupAnyKHR => .group, - .OpSubgroupAllEqualKHR => .group, - .OpGroupNonUniformRotateKHR => .group, - .OpSubgroupReadInvocationKHR => .group, - .OpExtInstWithForwardRefsKHR => .extension, - .OpUntypedGroupAsyncCopyKHR => .group, - .OpTraceRayKHR => .reserved, - .OpExecuteCallableKHR => .reserved, - .OpConvertUToAccelerationStructureKHR => .reserved, - .OpIgnoreIntersectionKHR => .reserved, - .OpTerminateRayKHR => .reserved, - .OpSDot => .arithmetic, - .OpUDot => .arithmetic, - .OpSUDot => .arithmetic, - .OpSDotAccSat => .arithmetic, - .OpUDotAccSat => .arithmetic, - .OpSUDotAccSat => .arithmetic, - .OpTypeCooperativeMatrixKHR => .type_declaration, - .OpCooperativeMatrixLoadKHR => .memory, - .OpCooperativeMatrixStoreKHR => .memory, - .OpCooperativeMatrixMulAddKHR => .arithmetic, - .OpCooperativeMatrixLengthKHR => .miscellaneous, - .OpConstantCompositeReplicateEXT => .constant_creation, - .OpSpecConstantCompositeReplicateEXT => .constant_creation, - .OpCompositeConstructReplicateEXT => .composite, - .OpTypeRayQueryKHR => .type_declaration, - .OpRayQueryInitializeKHR => .reserved, - .OpRayQueryTerminateKHR => .reserved, - .OpRayQueryGenerateIntersectionKHR => .reserved, - .OpRayQueryConfirmIntersectionKHR => .reserved, - .OpRayQueryProceedKHR => .reserved, - .OpRayQueryGetIntersectionTypeKHR => .reserved, - .OpImageSampleWeightedQCOM => .image, - .OpImageBoxFilterQCOM => .image, - .OpImageBlockMatchSSDQCOM => .image, - .OpImageBlockMatchSADQCOM => .image, - .OpBitCastArrayQCOM => .conversion, - .OpImageBlockMatchWindowSSDQCOM => .image, - .OpImageBlockMatchWindowSADQCOM => .image, - .OpImageBlockMatchGatherSSDQCOM => .image, - .OpImageBlockMatchGatherSADQCOM => .image, - .OpCompositeConstructCoopMatQCOM => .composite, - .OpCompositeExtractCoopMatQCOM => .composite, - .OpExtractSubArrayQCOM => .composite, - .OpGroupIAddNonUniformAMD => .group, - .OpGroupFAddNonUniformAMD => .group, - .OpGroupFMinNonUniformAMD => .group, - .OpGroupUMinNonUniformAMD => .group, - .OpGroupSMinNonUniformAMD => .group, - .OpGroupFMaxNonUniformAMD => .group, - .OpGroupUMaxNonUniformAMD => .group, - .OpGroupSMaxNonUniformAMD => .group, - .OpFragmentMaskFetchAMD => .reserved, - .OpFragmentFetchAMD => .reserved, - .OpReadClockKHR => .reserved, - .OpAllocateNodePayloadsAMDX => .reserved, - .OpEnqueueNodePayloadsAMDX => .reserved, - .OpTypeNodePayloadArrayAMDX => .reserved, - .OpFinishWritingNodePayloadAMDX => .reserved, - .OpNodePayloadArrayLengthAMDX => .reserved, - .OpIsNodePayloadValidAMDX => .reserved, - .OpConstantStringAMDX => .reserved, - .OpSpecConstantStringAMDX => .reserved, - .OpGroupNonUniformQuadAllKHR => .non_uniform, - .OpGroupNonUniformQuadAnyKHR => .non_uniform, - .OpTypeBufferEXT => .type_declaration, - .OpBufferPointerEXT => .memory, - .OpAbortKHR => .control_flow, - .OpUntypedImageTexelPointerEXT => .memory, - .OpMemberDecorateIdEXT => .annotation, - .OpConstantSizeOfEXT => .constant_creation, - .OpConstantDataKHR => .constant_creation, - .OpSpecConstantDataKHR => .constant_creation, - .OpPoisonKHR => .miscellaneous, - .OpFreezeKHR => .miscellaneous, - .OpHitObjectRecordHitMotionNV => .reserved, - .OpHitObjectRecordHitWithIndexMotionNV => .reserved, - .OpHitObjectRecordMissMotionNV => .reserved, - .OpHitObjectGetWorldToObjectNV => .reserved, - .OpHitObjectGetObjectToWorldNV => .reserved, - .OpHitObjectGetObjectRayDirectionNV => .reserved, - .OpHitObjectGetObjectRayOriginNV => .reserved, - .OpHitObjectTraceRayMotionNV => .reserved, - .OpHitObjectGetShaderRecordBufferHandleNV => .reserved, - .OpHitObjectGetShaderBindingTableRecordIndexNV => .reserved, - .OpHitObjectRecordEmptyNV => .reserved, - .OpHitObjectTraceRayNV => .reserved, - .OpHitObjectRecordHitNV => .reserved, - .OpHitObjectRecordHitWithIndexNV => .reserved, - .OpHitObjectRecordMissNV => .reserved, - .OpHitObjectExecuteShaderNV => .reserved, - .OpHitObjectGetCurrentTimeNV => .reserved, - .OpHitObjectGetAttributesNV => .reserved, - .OpHitObjectGetHitKindNV => .reserved, - .OpHitObjectGetPrimitiveIndexNV => .reserved, - .OpHitObjectGetGeometryIndexNV => .reserved, - .OpHitObjectGetInstanceIdNV => .reserved, - .OpHitObjectGetInstanceCustomIndexNV => .reserved, - .OpHitObjectGetWorldRayDirectionNV => .reserved, - .OpHitObjectGetWorldRayOriginNV => .reserved, - .OpHitObjectGetRayTMaxNV => .reserved, - .OpHitObjectGetRayTMinNV => .reserved, - .OpHitObjectIsEmptyNV => .reserved, - .OpHitObjectIsHitNV => .reserved, - .OpHitObjectIsMissNV => .reserved, - .OpReorderThreadWithHitObjectNV => .reserved, - .OpReorderThreadWithHintNV => .reserved, - .OpTypeHitObjectNV => .type_declaration, - .OpImageSampleFootprintNV => .image, - .OpTypeVectorIdEXT => .type_declaration, - .OpCooperativeVectorMatrixMulNV => .reserved, - .OpCooperativeVectorOuterProductAccumulateNV => .reserved, - .OpCooperativeVectorReduceSumAccumulateNV => .reserved, - .OpCooperativeVectorMatrixMulAddNV => .reserved, - .OpCooperativeMatrixConvertNV => .conversion, - .OpEmitMeshTasksEXT => .reserved, - .OpSetMeshOutputsEXT => .reserved, - .OpGroupNonUniformPartitionEXT => .non_uniform, - .OpWritePackedPrimitiveIndices4x8NV => .reserved, - .OpFetchMicroTriangleVertexPositionNV => .reserved, - .OpFetchMicroTriangleVertexBarycentricNV => .reserved, - .OpCooperativeVectorLoadNV => .memory, - .OpCooperativeVectorStoreNV => .memory, - .OpHitObjectRecordFromQueryEXT => .reserved, - .OpHitObjectRecordMissEXT => .reserved, - .OpHitObjectRecordMissMotionEXT => .reserved, - .OpHitObjectGetIntersectionTriangleVertexPositionsEXT => .reserved, - .OpHitObjectGetRayFlagsEXT => .reserved, - .OpHitObjectSetShaderBindingTableRecordIndexEXT => .reserved, - .OpHitObjectReorderExecuteShaderEXT => .reserved, - .OpHitObjectTraceReorderExecuteEXT => .reserved, - .OpHitObjectTraceMotionReorderExecuteEXT => .reserved, - .OpTypeHitObjectEXT => .type_declaration, - .OpReorderThreadWithHintEXT => .reserved, - .OpReorderThreadWithHitObjectEXT => .reserved, - .OpHitObjectTraceRayEXT => .reserved, - .OpHitObjectTraceRayMotionEXT => .reserved, - .OpHitObjectRecordEmptyEXT => .reserved, - .OpHitObjectExecuteShaderEXT => .reserved, - .OpHitObjectGetCurrentTimeEXT => .reserved, - .OpHitObjectGetAttributesEXT => .reserved, - .OpHitObjectGetHitKindEXT => .reserved, - .OpHitObjectGetPrimitiveIndexEXT => .reserved, - .OpHitObjectGetGeometryIndexEXT => .reserved, - .OpHitObjectGetInstanceIdEXT => .reserved, - .OpHitObjectGetInstanceCustomIndexEXT => .reserved, - .OpHitObjectGetObjectRayOriginEXT => .reserved, - .OpHitObjectGetObjectRayDirectionEXT => .reserved, - .OpHitObjectGetWorldRayDirectionEXT => .reserved, - .OpHitObjectGetWorldRayOriginEXT => .reserved, - .OpHitObjectGetObjectToWorldEXT => .reserved, - .OpHitObjectGetWorldToObjectEXT => .reserved, - .OpHitObjectGetRayTMaxEXT => .reserved, - .OpReportIntersectionKHR => .reserved, - .OpIgnoreIntersectionNV => .reserved, - .OpTerminateRayNV => .reserved, - .OpTraceNV => .reserved, - .OpTraceMotionNV => .reserved, - .OpTraceRayMotionNV => .reserved, - .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => .reserved, - .OpTypeAccelerationStructureKHR => .type_declaration, - .OpExecuteCallableNV => .reserved, - .OpRayQueryGetIntersectionClusterIdNV => .reserved, - .OpHitObjectGetClusterIdNV => .reserved, - .OpHitObjectGetRayTMinEXT => .reserved, - .OpHitObjectGetShaderBindingTableRecordIndexEXT => .reserved, - .OpHitObjectGetShaderRecordBufferHandleEXT => .reserved, - .OpHitObjectIsEmptyEXT => .reserved, - .OpHitObjectIsHitEXT => .reserved, - .OpHitObjectIsMissEXT => .reserved, - .OpTypeCooperativeMatrixNV => .type_declaration, - .OpCooperativeMatrixLoadNV => .reserved, - .OpCooperativeMatrixStoreNV => .reserved, - .OpCooperativeMatrixMulAddNV => .reserved, - .OpCooperativeMatrixLengthNV => .reserved, - .OpBeginInvocationInterlockEXT => .reserved, - .OpEndInvocationInterlockEXT => .reserved, - .OpCooperativeMatrixReduceNV => .arithmetic, - .OpCooperativeMatrixLoadTensorNV => .memory, - .OpCooperativeMatrixStoreTensorNV => .memory, - .OpCooperativeMatrixPerElementOpNV => .function, - .OpTypeTensorLayoutNV => .type_declaration, - .OpTypeTensorViewNV => .type_declaration, - .OpCreateTensorLayoutNV => .reserved, - .OpTensorLayoutSetDimensionNV => .reserved, - .OpTensorLayoutSetStrideNV => .reserved, - .OpTensorLayoutSliceNV => .reserved, - .OpTensorLayoutSetClampValueNV => .reserved, - .OpCreateTensorViewNV => .reserved, - .OpTensorViewSetDimensionNV => .reserved, - .OpTensorViewSetStrideNV => .reserved, - .OpDemoteToHelperInvocation => .control_flow, - .OpIsHelperInvocationEXT => .reserved, - .OpTensorViewSetClipNV => .reserved, - .OpTensorLayoutSetBlockSizeNV => .reserved, - .OpCooperativeMatrixTransposeNV => .conversion, - .OpConvertUToImageNV => .reserved, - .OpConvertUToSamplerNV => .reserved, - .OpConvertImageToUNV => .reserved, - .OpConvertSamplerToUNV => .reserved, - .OpConvertUToSampledImageNV => .reserved, - .OpConvertSampledImageToUNV => .reserved, - .OpSamplerImageAddressingModeNV => .reserved, - .OpRawAccessChainNV => .memory, - .OpRayQueryGetIntersectionSpherePositionNV => .reserved, - .OpRayQueryGetIntersectionSphereRadiusNV => .reserved, - .OpRayQueryGetIntersectionLSSPositionsNV => .reserved, - .OpRayQueryGetIntersectionLSSRadiiNV => .reserved, - .OpRayQueryGetIntersectionLSSHitValueNV => .reserved, - .OpHitObjectGetSpherePositionNV => .reserved, - .OpHitObjectGetSphereRadiusNV => .reserved, - .OpHitObjectGetLSSPositionsNV => .reserved, - .OpHitObjectGetLSSRadiiNV => .reserved, - .OpHitObjectIsSphereHitNV => .reserved, - .OpHitObjectIsLSSHitNV => .reserved, - .OpRayQueryIsSphereHitNV => .reserved, - .OpRayQueryIsLSSHitNV => .reserved, - .OpSubgroupShuffleINTEL => .group, - .OpSubgroupShuffleDownINTEL => .group, - .OpSubgroupShuffleUpINTEL => .group, - .OpSubgroupShuffleXorINTEL => .group, - .OpSubgroupBlockReadINTEL => .group, - .OpSubgroupBlockWriteINTEL => .group, - .OpSubgroupImageBlockReadINTEL => .group, - .OpSubgroupImageBlockWriteINTEL => .group, - .OpSubgroupImageMediaBlockReadINTEL => .group, - .OpSubgroupImageMediaBlockWriteINTEL => .group, - .OpUCountLeadingZerosINTEL => .reserved, - .OpUCountTrailingZerosINTEL => .reserved, - .OpAbsISubINTEL => .reserved, - .OpAbsUSubINTEL => .reserved, - .OpIAddSatINTEL => .reserved, - .OpUAddSatINTEL => .reserved, - .OpIAverageINTEL => .reserved, - .OpUAverageINTEL => .reserved, - .OpIAverageRoundedINTEL => .reserved, - .OpUAverageRoundedINTEL => .reserved, - .OpISubSatINTEL => .reserved, - .OpUSubSatINTEL => .reserved, - .OpIMul32x16INTEL => .reserved, - .OpUMul32x16INTEL => .reserved, - .OpAtomicFMinEXT => .atomic, - .OpAtomicFMaxEXT => .atomic, - .OpAssumeTrueKHR => .miscellaneous, - .OpExpectKHR => .miscellaneous, - .OpDecorateString => .annotation, - .OpMemberDecorateString => .annotation, - .OpVariableLengthArrayINTEL => .memory, - .OpSaveMemoryINTEL => .memory, - .OpRestoreMemoryINTEL => .memory, - .OpLoopControlINTEL => .reserved, - .OpRayQueryGetRayTMinKHR => .reserved, - .OpRayQueryGetRayFlagsKHR => .reserved, - .OpRayQueryGetIntersectionTKHR => .reserved, - .OpRayQueryGetIntersectionInstanceCustomIndexKHR => .reserved, - .OpRayQueryGetIntersectionInstanceIdKHR => .reserved, - .OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR => .reserved, - .OpRayQueryGetIntersectionGeometryIndexKHR => .reserved, - .OpRayQueryGetIntersectionPrimitiveIndexKHR => .reserved, - .OpRayQueryGetIntersectionBarycentricsKHR => .reserved, - .OpRayQueryGetIntersectionFrontFaceKHR => .reserved, - .OpRayQueryGetIntersectionCandidateAABBOpaqueKHR => .reserved, - .OpRayQueryGetIntersectionObjectRayDirectionKHR => .reserved, - .OpRayQueryGetIntersectionObjectRayOriginKHR => .reserved, - .OpRayQueryGetWorldRayDirectionKHR => .reserved, - .OpRayQueryGetWorldRayOriginKHR => .reserved, - .OpRayQueryGetIntersectionObjectToWorldKHR => .reserved, - .OpRayQueryGetIntersectionWorldToObjectKHR => .reserved, - .OpAtomicFAddEXT => .atomic, - .OpTypeBufferSurfaceINTEL => .type_declaration, - .OpTypeStructContinuedINTEL => .type_declaration, - .OpConstantCompositeContinuedINTEL => .constant_creation, - .OpSpecConstantCompositeContinuedINTEL => .constant_creation, - .OpCompositeConstructContinuedINTEL => .composite, - .OpConvertFToBF16INTEL => .conversion, - .OpConvertBF16ToFINTEL => .conversion, - .OpControlBarrierArriveINTEL => .barrier, - .OpControlBarrierWaitINTEL => .barrier, - .OpArithmeticFenceEXT => .miscellaneous, - .OpSubgroupBlockPrefetchINTEL => .group, - .OpSubgroup2DBlockLoadINTEL => .group, - .OpSubgroup2DBlockLoadTransformINTEL => .group, - .OpSubgroup2DBlockLoadTransposeINTEL => .group, - .OpSubgroup2DBlockPrefetchINTEL => .group, - .OpSubgroup2DBlockStoreINTEL => .group, - .OpSubgroupMatrixMultiplyAccumulateINTEL => .group, - .OpBitwiseFunctionINTEL => .bit, - .OpUntypedVariableLengthArrayINTEL => .memory, - .OpConditionalExtensionINTEL => .extension, - .OpConditionalEntryPointINTEL => .mode_setting, - .OpConditionalCapabilityINTEL => .mode_setting, - .OpSpecConstantTargetINTEL => .constant_creation, - .OpSpecConstantArchitectureINTEL => .constant_creation, - .OpSpecConstantCapabilitiesINTEL => .constant_creation, - .OpConditionalCopyObjectINTEL => .composite, - .OpGroupIMulKHR => .group, - .OpGroupFMulKHR => .group, - .OpGroupBitwiseAndKHR => .group, - .OpGroupBitwiseOrKHR => .group, - .OpGroupBitwiseXorKHR => .group, - .OpGroupLogicalAndKHR => .group, - .OpGroupLogicalOrKHR => .group, - .OpGroupLogicalXorKHR => .group, - .OpRoundFToTF32INTEL => .conversion, - .OpMaskedGatherINTEL => .memory, - .OpMaskedScatterINTEL => .memory, - .OpConvertHandleToImageINTEL => .image, - .OpConvertHandleToSamplerINTEL => .image, - .OpConvertHandleToSampledImageINTEL => .image, - .OpFDot2MixAcc32VALVE => .reserved, - .OpFDot2MixAcc16VALVE => .reserved, - .OpFDot4MixAcc32VALVE => .reserved, + + pub fn class(opcode: Opcode) Class { + return switch (@backingInt(opcode)) { + 0...1 => .miscellaneous, + 2...8 => .debug, + 10...12 => .extension, + 14...17 => .mode_setting, + 19...39 => .type_declaration, + 41...52 => .constant_creation, + 54...57 => .function, + 59...70 => .memory, + 71...75 => .annotation, + 77...84 => .composite, + 86...107 => .image, + 109...124 => .conversion, + 126...152 => .arithmetic, + 154...191 => .relational_and_logical, + 194...205 => .bit, + 207...215 => .derivative, + 218...221 => .primitive, + 224...225 => .barrier, + 227...242 => .atomic, + 245...257 => .control_flow, + 259...271 => .group, + 274...288 => .pipe, + 291...304 => .device_side_enqueue, + 305...316 => .image, + 317 => .debug, + 318...319 => .atomic, + 320 => .image, + 321 => .miscellaneous, + 322 => .type_declaration, + 323...324 => .pipe, + 325...326 => .device_side_enqueue, + 327 => .type_declaration, + 328...329 => .barrier, + 330 => .debug, + 331 => .mode_setting, + 332 => .annotation, + 333...366 => .non_uniform, + 400 => .composite, + 401...403 => .memory, + 4160...4162 => .image, + 4416 => .control_flow, + 4417 => .type_declaration, + 4418...4420 => .memory, + 4421...4422 => .group, + 4423...4426 => .memory, + 4427 => .arithmetic, + 4428...4432 => .group, + 4433 => .extension, + 4434 => .group, + 4445...4449 => .reserved, + 4450...4455 => .arithmetic, + 4456 => .type_declaration, + 4457...4458 => .memory, + 4459 => .arithmetic, + 4460 => .miscellaneous, + 4461...4462 => .constant_creation, + 4463 => .composite, + 4472 => .type_declaration, + 4473...5056 => .reserved, + 5110...5111 => .non_uniform, + 5115 => .type_declaration, + 5119 => .memory, + 5121 => .control_flow, + 5126 => .memory, + 5127 => .annotation, + 5129...5148 => .constant_creation, + 5158...5159 => .miscellaneous, + 5288 => .type_declaration, + 5294...5295 => .reserved, + 5296 => .non_uniform, + 5304...5312 => .reserved, + 5313 => .type_declaration, + 5314...5340 => .reserved, + 5341 => .type_declaration, + 5347...5365 => .reserved, + 5380 => .control_flow, + 5381 => .reserved, + 5614...5615 => .atomic, + 5630...5631 => .miscellaneous, + 5632...5633 => .annotation, + 6016...6032 => .reserved, + 6035 => .atomic, + 6145 => .miscellaneous, + 6401...6408 => .group, + else => unreachable, + }; + } + + pub fn resultIndex(opcode: Opcode) ?u8 { + const list = opcode.operands(); + if (list.len == 0) return null; + return switch (list[0].kind) { + .id_result => 1, + .id_result_type => 2, + else => null, + }; + } + + pub fn instructionSize(comptime opcode: Opcode, ops: opcode.Operands()) usize { + return operandsSize(opcode.Operands(), ops) + 1; + } + + fn operandsSize(comptime T: type, ops: T) usize { + const info = switch (@typeInfo(T)) { + .@"struct" => |info| info, + .void => return 0, + else => unreachable, + }; + + var total: usize = 0; + inline for (info.field_names, info.field_types) |field_name, field_type| { + total += operandSize(field_type, @field(ops, field_name)); + } + + return total; + } + + fn operandSize(comptime T: type, operand: T) usize { + return switch (T) { + LiteralSpecConstantOpInteger => unreachable, + Id, LiteralInteger, LiteralExtInstInteger => 1, + LiteralString => @divCeil(operand.len + 1, @sizeOf(Word)), + LiteralContextDependentNumber => switch (operand) { + .int32, .uint32, .float32 => 1, + .int64, .uint64, .float64 => 2, + }, + PairLiteralIntegerIdRef, PairIdRefLiteralInteger, PairIdRefIdRef => 2, + else => switch (@typeInfo(T)) { + .@"enum" => 1, + .optional => |info| if (operand) |child| operandSize(info.child, child) else 0, + .pointer => |info| blk: { + std.debug.assert(info.size == .slice); + var total: usize = 0; + for (operand) |item| { + total += operandSize(info.child, item); + } + break :blk total; + }, + .@"struct" => |struct_info| { + if (struct_info.layout == .@"packed") return 1; + var total: usize = 0; + inline for (struct_info.field_names, struct_info.field_types) |field_name, field_type| { + switch (@typeInfo(field_type)) { + .optional => |info| if (@field(operand, field_name)) |child| { + total += operandsSize(info.child, child); + }, + .bool, .int => {}, + else => unreachable, + } + } + return total + 1; + }, + .@"union" => switch (operand) { + inline else => |op, tag| operandsSize(@FieldType(T, @tagName(tag)), op) + 1, + }, + else => unreachable, + }, }; } }; @@ -3694,6 +2918,173 @@ pub const OpenClOpcode = enum(u16) { u_abs_diff = 202, u_mul_hi = 203, u_mad_hi = 204, + + pub fn operands(opcode: OpenClOpcode) []const Operand { + return switch (opcode) { + .acos => &.{.{ .kind = .id_ref }}, + .acosh => &.{.{ .kind = .id_ref }}, + .acospi => &.{.{ .kind = .id_ref }}, + .asin => &.{.{ .kind = .id_ref }}, + .asinh => &.{.{ .kind = .id_ref }}, + .asinpi => &.{.{ .kind = .id_ref }}, + .atan => &.{.{ .kind = .id_ref }}, + .atan2 => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .atanh => &.{.{ .kind = .id_ref }}, + .atanpi => &.{.{ .kind = .id_ref }}, + .atan2pi => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .cbrt => &.{.{ .kind = .id_ref }}, + .ceil => &.{.{ .kind = .id_ref }}, + .copysign => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .cos => &.{.{ .kind = .id_ref }}, + .cosh => &.{.{ .kind = .id_ref }}, + .cospi => &.{.{ .kind = .id_ref }}, + .erfc => &.{.{ .kind = .id_ref }}, + .erf => &.{.{ .kind = .id_ref }}, + .exp => &.{.{ .kind = .id_ref }}, + .exp2 => &.{.{ .kind = .id_ref }}, + .exp10 => &.{.{ .kind = .id_ref }}, + .expm1 => &.{.{ .kind = .id_ref }}, + .fabs => &.{.{ .kind = .id_ref }}, + .fdim => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .floor => &.{.{ .kind = .id_ref }}, + .fma => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .fmax => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .fmin => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .fmod => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .fract => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .frexp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .hypot => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .ilogb => &.{.{ .kind = .id_ref }}, + .ldexp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .lgamma => &.{.{ .kind = .id_ref }}, + .lgamma_r => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .log => &.{.{ .kind = .id_ref }}, + .log2 => &.{.{ .kind = .id_ref }}, + .log10 => &.{.{ .kind = .id_ref }}, + .log1p => &.{.{ .kind = .id_ref }}, + .logb => &.{.{ .kind = .id_ref }}, + .mad => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .maxmag => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .minmag => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .modf => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .nan => &.{.{ .kind = .id_ref }}, + .nextafter => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .pow => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .pown => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .powr => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .remainder => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .remquo => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .rint => &.{.{ .kind = .id_ref }}, + .rootn => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .round => &.{.{ .kind = .id_ref }}, + .rsqrt => &.{.{ .kind = .id_ref }}, + .sin => &.{.{ .kind = .id_ref }}, + .sincos => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .sinh => &.{.{ .kind = .id_ref }}, + .sinpi => &.{.{ .kind = .id_ref }}, + .sqrt => &.{.{ .kind = .id_ref }}, + .tan => &.{.{ .kind = .id_ref }}, + .tanh => &.{.{ .kind = .id_ref }}, + .tanpi => &.{.{ .kind = .id_ref }}, + .tgamma => &.{.{ .kind = .id_ref }}, + .trunc => &.{.{ .kind = .id_ref }}, + .half_cos => &.{.{ .kind = .id_ref }}, + .half_divide => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .half_exp => &.{.{ .kind = .id_ref }}, + .half_exp2 => &.{.{ .kind = .id_ref }}, + .half_exp10 => &.{.{ .kind = .id_ref }}, + .half_log => &.{.{ .kind = .id_ref }}, + .half_log2 => &.{.{ .kind = .id_ref }}, + .half_log10 => &.{.{ .kind = .id_ref }}, + .half_powr => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .half_recip => &.{.{ .kind = .id_ref }}, + .half_rsqrt => &.{.{ .kind = .id_ref }}, + .half_sin => &.{.{ .kind = .id_ref }}, + .half_sqrt => &.{.{ .kind = .id_ref }}, + .half_tan => &.{.{ .kind = .id_ref }}, + .native_cos => &.{.{ .kind = .id_ref }}, + .native_divide => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .native_exp => &.{.{ .kind = .id_ref }}, + .native_exp2 => &.{.{ .kind = .id_ref }}, + .native_exp10 => &.{.{ .kind = .id_ref }}, + .native_log => &.{.{ .kind = .id_ref }}, + .native_log2 => &.{.{ .kind = .id_ref }}, + .native_log10 => &.{.{ .kind = .id_ref }}, + .native_powr => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .native_recip => &.{.{ .kind = .id_ref }}, + .native_rsqrt => &.{.{ .kind = .id_ref }}, + .native_sin => &.{.{ .kind = .id_ref }}, + .native_sqrt => &.{.{ .kind = .id_ref }}, + .native_tan => &.{.{ .kind = .id_ref }}, + .fclamp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .degrees => &.{.{ .kind = .id_ref }}, + .fmax_common => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .fmin_common => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .mix => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .radians => &.{.{ .kind = .id_ref }}, + .step => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .smoothstep => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .sign => &.{.{ .kind = .id_ref }}, + .cross => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .distance => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .length => &.{.{ .kind = .id_ref }}, + .normalize => &.{.{ .kind = .id_ref }}, + .fast_distance => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .fast_length => &.{.{ .kind = .id_ref }}, + .fast_normalize => &.{.{ .kind = .id_ref }}, + .s_abs => &.{.{ .kind = .id_ref }}, + .s_abs_diff => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_add_sat => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_add_sat => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_hadd => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_hadd => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_rhadd => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_rhadd => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_clamp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_clamp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .clz => &.{.{ .kind = .id_ref }}, + .ctz => &.{.{ .kind = .id_ref }}, + .s_mad_hi => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_mad_sat => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_mad_sat => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_max => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_max => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_min => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_min => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_mul_hi => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .rotate => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_sub_sat => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_sub_sat => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_upsample => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_upsample => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .popcount => &.{.{ .kind = .id_ref }}, + .s_mad24 => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_mad24 => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .s_mul24 => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_mul24 => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .vloadn => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .literal_integer } }, + .vstoren => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .vload_half => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .vload_halfn => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .literal_integer } }, + .vstore_half => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .vstore_half_r => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .fp_rounding_mode } }, + .vstore_halfn => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .vstore_halfn_r => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .fp_rounding_mode } }, + .vloada_halfn => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .literal_integer } }, + .vstorea_halfn => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .vstorea_halfn_r => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .fp_rounding_mode } }, + .shuffle => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .shuffle2 => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .printf => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref, .quantifier = .variadic } }, + .prefetch => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .bitselect => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .select => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_abs => &.{.{ .kind = .id_ref }}, + .u_abs_diff => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_mul_hi => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .u_mad_hi => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + }; + } }; pub const GlslOpcode = enum(u16) { @@ -3778,12 +3169,94 @@ pub const GlslOpcode = enum(u16) { NMin = 79, NMax = 80, NClamp = 81, -}; -pub const Zig = enum(u16) { - InvocationGlobal = 0, + pub fn operands(opcode: GlslOpcode) []const Operand { + return switch (opcode) { + .Round => &.{.{ .kind = .id_ref }}, + .RoundEven => &.{.{ .kind = .id_ref }}, + .Trunc => &.{.{ .kind = .id_ref }}, + .FAbs => &.{.{ .kind = .id_ref }}, + .SAbs => &.{.{ .kind = .id_ref }}, + .FSign => &.{.{ .kind = .id_ref }}, + .SSign => &.{.{ .kind = .id_ref }}, + .Floor => &.{.{ .kind = .id_ref }}, + .Ceil => &.{.{ .kind = .id_ref }}, + .Fract => &.{.{ .kind = .id_ref }}, + .Radians => &.{.{ .kind = .id_ref }}, + .Degrees => &.{.{ .kind = .id_ref }}, + .Sin => &.{.{ .kind = .id_ref }}, + .Cos => &.{.{ .kind = .id_ref }}, + .Tan => &.{.{ .kind = .id_ref }}, + .Asin => &.{.{ .kind = .id_ref }}, + .Acos => &.{.{ .kind = .id_ref }}, + .Atan => &.{.{ .kind = .id_ref }}, + .Sinh => &.{.{ .kind = .id_ref }}, + .Cosh => &.{.{ .kind = .id_ref }}, + .Tanh => &.{.{ .kind = .id_ref }}, + .Asinh => &.{.{ .kind = .id_ref }}, + .Acosh => &.{.{ .kind = .id_ref }}, + .Atanh => &.{.{ .kind = .id_ref }}, + .Atan2 => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .Pow => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .Exp => &.{.{ .kind = .id_ref }}, + .Log => &.{.{ .kind = .id_ref }}, + .Exp2 => &.{.{ .kind = .id_ref }}, + .Log2 => &.{.{ .kind = .id_ref }}, + .Sqrt => &.{.{ .kind = .id_ref }}, + .InverseSqrt => &.{.{ .kind = .id_ref }}, + .Determinant => &.{.{ .kind = .id_ref }}, + .MatrixInverse => &.{.{ .kind = .id_ref }}, + .Modf => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .ModfStruct => &.{.{ .kind = .id_ref }}, + .FMin => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .UMin => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .SMin => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .FMax => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .UMax => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .SMax => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .FClamp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .UClamp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .SClamp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .FMix => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .IMix => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .Step => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .SmoothStep => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .Fma => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .Frexp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .FrexpStruct => &.{.{ .kind = .id_ref }}, + .Ldexp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .PackSnorm4x8 => &.{.{ .kind = .id_ref }}, + .PackUnorm4x8 => &.{.{ .kind = .id_ref }}, + .PackSnorm2x16 => &.{.{ .kind = .id_ref }}, + .PackUnorm2x16 => &.{.{ .kind = .id_ref }}, + .PackHalf2x16 => &.{.{ .kind = .id_ref }}, + .PackDouble2x32 => &.{.{ .kind = .id_ref }}, + .UnpackSnorm2x16 => &.{.{ .kind = .id_ref }}, + .UnpackUnorm2x16 => &.{.{ .kind = .id_ref }}, + .UnpackHalf2x16 => &.{.{ .kind = .id_ref }}, + .UnpackSnorm4x8 => &.{.{ .kind = .id_ref }}, + .UnpackUnorm4x8 => &.{.{ .kind = .id_ref }}, + .UnpackDouble2x32 => &.{.{ .kind = .id_ref }}, + .Length => &.{.{ .kind = .id_ref }}, + .Distance => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .Cross => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .Normalize => &.{.{ .kind = .id_ref }}, + .FaceForward => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .Reflect => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .Refract => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .FindILsb => &.{.{ .kind = .id_ref }}, + .FindSMsb => &.{.{ .kind = .id_ref }}, + .FindUMsb => &.{.{ .kind = .id_ref }}, + .InterpolateAtCentroid => &.{.{ .kind = .id_ref }}, + .InterpolateAtSample => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .InterpolateAtOffset => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .NMin => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .NMax => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + .NClamp => &.{ .{ .kind = .id_ref }, .{ .kind = .id_ref }, .{ .kind = .id_ref } }, + }; + } }; -pub const ImageOperands = packed struct { +pub const ImageOperands = packed struct(Word) { bias: bool = false, lod: bool = false, grad: bool = false, @@ -3801,21 +3274,7 @@ pub const ImageOperands = packed struct { nontemporal: bool = false, _reserved_bit_15: bool = false, offsets: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_17_to_31: u15 = 0, pub const Extended = struct { bias: ?struct { id_ref: Id } = null, @@ -3835,92 +3294,27 @@ pub const ImageOperands = packed struct { nontemporal: bool = false, _reserved_bit_15: bool = false, offsets: ?struct { id_ref: Id } = null, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_17_to_31: u15 = 0, }; }; -pub const FPFastMathMode = packed struct { +pub const FPFastMathMode = packed struct(Word) { not_na_n: bool = false, not_inf: bool = false, nsz: bool = false, allow_recip: bool = false, fast: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, + _reserved_bits_5_to_15: u11 = 0, allow_contract: bool = false, allow_reassoc: bool = false, allow_transform: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_19_to_31: u13 = 0, }; -pub const SelectionControl = packed struct { +pub const SelectionControl = packed struct(Word) { flatten: bool = false, dont_flatten: bool = false, - _reserved_bit_2: bool = false, - _reserved_bit_3: bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_2_to_31: u30 = 0, }; -pub const LoopControl = packed struct { +pub const LoopControl = packed struct(Word) { unroll: bool = false, dont_unroll: bool = false, dependency_infinite: bool = false, @@ -3930,29 +3324,7 @@ pub const LoopControl = packed struct { iteration_multiple: bool = false, peel_count: bool = false, partial_count: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - initiation_interval_altera: bool = false, - max_concurrency_altera: bool = false, - dependency_array_altera: bool = false, - pipeline_enable_altera: bool = false, - loop_coalesce_altera: bool = false, - max_interleaving_altera: bool = false, - speculated_iterations_altera: bool = false, - no_fusion_altera: bool = false, - loop_count_altera: bool = false, - max_reinvocation_delay_altera: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_9_to_31: u23 = 0, pub const Extended = struct { unroll: bool = false, @@ -3964,66 +3336,19 @@ pub const LoopControl = packed struct { iteration_multiple: ?struct { literal_integer: LiteralInteger } = null, peel_count: ?struct { literal_integer: LiteralInteger } = null, partial_count: ?struct { literal_integer: LiteralInteger } = null, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - initiation_interval_altera: ?struct { literal_integer: LiteralInteger } = null, - max_concurrency_altera: ?struct { literal_integer: LiteralInteger } = null, - dependency_array_altera: ?struct { literal_integer: LiteralInteger } = null, - pipeline_enable_altera: ?struct { literal_integer: LiteralInteger } = null, - loop_coalesce_altera: ?struct { literal_integer: LiteralInteger } = null, - max_interleaving_altera: ?struct { literal_integer: LiteralInteger } = null, - speculated_iterations_altera: ?struct { literal_integer: LiteralInteger } = null, - no_fusion_altera: bool = false, - loop_count_altera: ?struct { literal_integer: LiteralInteger } = null, - max_reinvocation_delay_altera: ?struct { literal_integer: LiteralInteger } = null, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_9_to_31: u23 = 0, }; }; -pub const FunctionControl = packed struct { +pub const FunctionControl = packed struct(Word) { @"inline": bool = false, dont_inline: bool = false, pure: bool = false, @"const": bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, + _reserved_bits_4_to_15: u12 = 0, opt_none_ext: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_17_to_31: u15 = 0, }; -pub const MemorySemantics = packed struct { +pub const MemorySemantics = packed struct(Word) { _reserved_bit_0: bool = false, acquire: bool = false, release: bool = false, @@ -4040,56 +3365,16 @@ pub const MemorySemantics = packed struct { make_available: bool = false, make_visible: bool = false, @"volatile": bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_16_to_31: u16 = 0, }; -pub const MemoryAccess = packed struct { +pub const MemoryAccess = packed struct(Word) { @"volatile": bool = false, aligned: bool = false, nontemporal: bool = false, make_pointer_available: bool = false, make_pointer_visible: bool = false, non_private_pointer: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - alias_scope_intel_mask: bool = false, - no_alias_intel_mask: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_6_to_31: u26 = 0, pub const Extended = struct { @"volatile": bool = false, @@ -4098,69 +3383,14 @@ pub const MemoryAccess = packed struct { make_pointer_available: ?struct { id_scope: Id } = null, make_pointer_visible: ?struct { id_scope: Id } = null, non_private_pointer: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - alias_scope_intel_mask: ?struct { id_ref: Id } = null, - no_alias_intel_mask: ?struct { id_ref: Id } = null, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_6_to_31: u26 = 0, }; }; -pub const KernelProfilingInfo = packed struct { +pub const KernelProfilingInfo = packed struct(Word) { cmd_exec_time: bool = false, - _reserved_bit_1: bool = false, - _reserved_bit_2: bool = false, - _reserved_bit_3: bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_1_to_31: u31 = 0, }; -pub const RayFlags = packed struct { +pub const RayFlags = packed struct(Word) { opaque_khr: bool = false, no_opaque_khr: bool = false, terminate_on_first_hit_khr: bool = false, @@ -4172,95 +3402,17 @@ pub const RayFlags = packed struct { skip_triangles_khr: bool = false, skip_aab_bs_khr: bool = false, force_opacity_micromap2state_ext: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_11_to_31: u21 = 0, }; -pub const FragmentShadingRate = packed struct { +pub const FragmentShadingRate = packed struct(Word) { vertical2pixels: bool = false, vertical4pixels: bool = false, horizontal2pixels: bool = false, horizontal4pixels: bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_4_to_31: u28 = 0, }; -pub const RawAccessChainOperands = packed struct { - robustness_per_component_nv: bool = false, - robustness_per_element_nv: bool = false, - _reserved_bit_2: bool = false, - _reserved_bit_3: bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, +pub const RawAccessChainOperands = packed struct(Word) { + _reserved_bits_0_to_31: u32 = 0, }; pub const SourceLanguage = enum(u32) { unknown = 0, @@ -4286,8 +3438,6 @@ pub const ExecutionModel = enum(u32) { fragment = 4, gl_compute = 5, kernel = 6, - task_nv = 5267, - mesh_nv = 5268, ray_generation_khr = 5313, intersection_khr = 5314, any_hit_khr = 5315, @@ -4358,16 +3508,7 @@ pub const ExecutionMode = enum(u32) { signed_zero_inf_nan_preserve = 4461, rounding_mode_rte = 4462, rounding_mode_rtz = 4463, - non_coherent_tile_attachment_read_qcom = 4489, - tile_shading_rate_qcom = 4490, - early_and_late_fragment_tests_amd = 5017, stencil_ref_replacing_ext = 5027, - coalescing_amdx = 5069, - is_api_entry_amdx = 5070, - max_node_recursion_amdx = 5071, - static_num_workgroups_amdx = 5072, - shader_index_amdx = 5073, - max_num_workgroups_amdx = 5077, stencil_ref_unchanged_front_amd = 5079, stencil_ref_greater_front_amd = 5080, stencil_ref_less_front_amd = 5081, @@ -4376,7 +3517,6 @@ pub const ExecutionMode = enum(u32) { stencil_ref_less_back_amd = 5084, quad_derivatives_khr = 5088, require_full_quads_khr = 5089, - shares_input_with_amdx = 5102, arithmetic_poison_khr = 5157, output_lines_ext = 5269, output_primitives_ext = 5270, @@ -4390,24 +3530,8 @@ pub const ExecutionMode = enum(u32) { shading_rate_interlock_ordered_ext = 5370, shading_rate_interlock_unordered_ext = 5371, shader64bit_indexing_ext = 5427, - shared_local_memory_size_intel = 5618, - rounding_mode_rtpintel = 5620, - rounding_mode_rtnintel = 5621, - floating_point_mode_altintel = 5622, - floating_point_mode_ieeeintel = 5623, - max_workgroup_size_intel = 5893, - max_work_dim_intel = 5894, - no_global_offset_intel = 5895, - num_simd_workitems_intel = 5896, - scheduler_target_fmax_mhz_intel = 5903, maximally_reconverges_khr = 6023, fp_fast_math_default = 6028, - streaming_interface_intel = 6154, - register_map_interface_intel = 6160, - named_barrier_count_intel = 6417, - maximum_registers_intel = 6461, - maximum_registers_id_intel = 6462, - named_maximum_registers_intel = 6463, pub const Extended = union(ExecutionMode) { invocations: struct { literal_integer: LiteralInteger }, @@ -4458,16 +3582,7 @@ pub const ExecutionMode = enum(u32) { signed_zero_inf_nan_preserve: struct { target_width: LiteralInteger }, rounding_mode_rte: struct { target_width: LiteralInteger }, rounding_mode_rtz: struct { target_width: LiteralInteger }, - non_coherent_tile_attachment_read_qcom, - tile_shading_rate_qcom: struct { x_rate: LiteralInteger, y_rate: LiteralInteger, z_rate: LiteralInteger }, - early_and_late_fragment_tests_amd, stencil_ref_replacing_ext, - coalescing_amdx, - is_api_entry_amdx: struct { is_entry: Id }, - max_node_recursion_amdx: struct { number_of_recursions: Id }, - static_num_workgroups_amdx: struct { x_size: Id, y_size: Id, z_size: Id }, - shader_index_amdx: struct { shader_index: Id }, - max_num_workgroups_amdx: struct { x_size: Id, y_size: Id, z_size: Id }, stencil_ref_unchanged_front_amd, stencil_ref_greater_front_amd, stencil_ref_less_front_amd, @@ -4476,7 +3591,6 @@ pub const ExecutionMode = enum(u32) { stencil_ref_less_back_amd, quad_derivatives_khr, require_full_quads_khr, - shares_input_with_amdx: struct { node_name: Id, shader_index: Id }, arithmetic_poison_khr, output_lines_ext, output_primitives_ext: struct { primitive_count: LiteralInteger }, @@ -4490,24 +3604,8 @@ pub const ExecutionMode = enum(u32) { shading_rate_interlock_ordered_ext, shading_rate_interlock_unordered_ext, shader64bit_indexing_ext, - shared_local_memory_size_intel: struct { size: LiteralInteger }, - rounding_mode_rtpintel: struct { target_width: LiteralInteger }, - rounding_mode_rtnintel: struct { target_width: LiteralInteger }, - floating_point_mode_altintel: struct { target_width: LiteralInteger }, - floating_point_mode_ieeeintel: struct { target_width: LiteralInteger }, - max_workgroup_size_intel: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger, literal_integer_2: LiteralInteger }, - max_work_dim_intel: struct { literal_integer: LiteralInteger }, - no_global_offset_intel, - num_simd_workitems_intel: struct { literal_integer: LiteralInteger }, - scheduler_target_fmax_mhz_intel: struct { literal_integer: LiteralInteger }, maximally_reconverges_khr, fp_fast_math_default: struct { target_type: Id, id_ref_1: Id }, - streaming_interface_intel: struct { stall_free_return: LiteralInteger }, - register_map_interface_intel: struct { wait_for_done_write: LiteralInteger }, - named_barrier_count_intel: struct { barrier_count: LiteralInteger }, - maximum_registers_intel: struct { number_of_registers: LiteralInteger }, - maximum_registers_id_intel: struct { number_of_registers: Id }, - named_maximum_registers_intel: struct { named_maximum_number_of_registers: NamedMaximumNumberOfRegisters }, }; }; pub const StorageClass = enum(u32) { @@ -4525,8 +3623,6 @@ pub const StorageClass = enum(u32) { image = 11, storage_buffer = 12, tile_image_ext = 4172, - tile_attachment_qcom = 4491, - node_payload_amdx = 5068, callable_data_khr = 5328, incoming_callable_data_khr = 5329, ray_payload_khr = 5338, @@ -4534,12 +3630,8 @@ pub const StorageClass = enum(u32) { incoming_ray_payload_khr = 5342, shader_record_buffer_khr = 5343, physical_storage_buffer = 5349, - hit_object_attribute_nv = 5385, task_payload_workgroup_ext = 5402, hit_object_attribute_ext = 5411, - code_section_intel = 5605, - device_only_altera = 5936, - host_only_altera = 5937, }; pub const Dim = enum(u32) { @"1d" = 0, @@ -4662,30 +3754,10 @@ pub const FPRoundingMode = enum(u32) { rtp = 2, rtn = 3, }; -pub const FPDenormMode = enum(u32) { - preserve = 0, - flush_to_zero = 1, -}; -pub const QuantizationModes = enum(u32) { - trn = 0, - trn_zero = 1, - rnd = 2, - rnd_zero = 3, - rnd_inf = 4, - rnd_min_inf = 5, - rnd_conv = 6, - rnd_conv_odd = 7, -}; -pub const FPOperationMode = enum(u32) { - ieee = 0, - alt = 1, -}; -pub const OverflowModes = enum(u32) { - wrap = 0, - sat = 1, - sat_zero = 2, - sat_sym = 3, -}; +pub const FPDenormMode = enum(u32) {}; +pub const QuantizationModes = enum(u32) {}; +pub const FPOperationMode = enum(u32) {}; +pub const OverflowModes = enum(u32) {}; pub const LinkageType = enum(u32) { @"export" = 0, import = 1, @@ -4696,12 +3768,7 @@ pub const AccessQualifier = enum(u32) { write_only = 1, read_write = 2, }; -pub const HostAccessQualifier = enum(u32) { - none_intel = 0, - read_intel = 1, - write_intel = 2, - read_write_intel = 3, -}; +pub const HostAccessQualifier = enum(u32) {}; pub const FunctionParameterAttribute = enum(u32) { zext = 0, sext = 1, @@ -4764,106 +3831,17 @@ pub const Decoration = enum(u32) { saturated_to_largest_float8normal_conversion_ext = 4216, no_signed_wrap = 4469, no_unsigned_wrap = 4470, - weight_texture_qcom = 4487, - block_match_texture_qcom = 4488, - block_match_sampler_qcom = 4499, - explicit_interp_amd = 4999, - node_shares_payload_limits_with_amdx = 5019, - node_max_payloads_amdx = 5020, - track_finish_writing_amdx = 5078, - payload_node_name_amdx = 5091, - payload_node_base_index_amdx = 5098, - payload_node_sparse_array_amdx = 5099, - payload_node_array_size_amdx = 5100, - payload_dispatch_indirect_amdx = 5105, array_stride_id_ext = 5124, offset_id_ext = 5125, utf_encoded_khr = 5145, - override_coverage_nv = 5248, - passthrough_nv = 5250, - viewport_relative_nv = 5252, - secondary_viewport_relative_nv = 5256, per_primitive_ext = 5271, - per_view_nv = 5272, - per_task_nv = 5273, per_vertex_khr = 5285, non_uniform = 5300, restrict_pointer = 5355, aliased_pointer = 5356, - member_offset_nv = 5358, - hit_object_shader_record_buffer_nv = 5386, hit_object_shader_record_buffer_ext = 5389, - bank_nv = 5397, - bindless_sampler_nv = 5398, - bindless_image_nv = 5399, - bound_sampler_nv = 5400, - bound_image_nv = 5401, - simt_call_intel = 5599, - referenced_indirectly_intel = 5602, - clobber_intel = 5607, - side_effects_intel = 5608, - vector_compute_variable_intel = 5624, - func_param_io_kind_intel = 5625, - vector_compute_function_intel = 5626, - stack_call_intel = 5627, - global_variable_offset_intel = 5628, counter_buffer = 5634, user_semantic = 5635, - user_type_google = 5636, - function_rounding_mode_intel = 5822, - function_denorm_mode_intel = 5823, - register_altera = 5825, - memory_altera = 5826, - numbanks_altera = 5827, - bankwidth_altera = 5828, - max_private_copies_altera = 5829, - singlepump_altera = 5830, - doublepump_altera = 5831, - max_replicates_altera = 5832, - simple_dual_port_altera = 5833, - merge_altera = 5834, - bank_bits_altera = 5835, - force_pow2depth_altera = 5836, - stridesize_altera = 5883, - wordsize_altera = 5884, - true_dual_port_altera = 5885, - burst_coalesce_altera = 5899, - cache_size_altera = 5900, - dont_statically_coalesce_altera = 5901, - prefetch_altera = 5902, - stall_enable_altera = 5905, - fuse_loops_in_function_altera = 5907, - math_op_dsp_mode_altera = 5909, - alias_scope_intel = 5914, - no_alias_intel = 5915, - initiation_interval_altera = 5917, - max_concurrency_altera = 5918, - pipeline_enable_altera = 5919, - buffer_location_altera = 5921, - io_pipe_storage_altera = 5944, - function_floating_point_mode_intel = 6080, - single_element_vector_intel = 6085, - vector_compute_callable_function_intel = 6087, - media_block_iointel = 6140, - stall_free_altera = 6151, - fp_max_error_decoration_intel = 6170, - latency_control_label_altera = 6172, - latency_control_constraint_altera = 6173, - conduit_kernel_argument_altera = 6175, - register_map_kernel_argument_altera = 6176, - mm_host_interface_address_width_altera = 6177, - mm_host_interface_data_width_altera = 6178, - mm_host_interface_latency_altera = 6179, - mm_host_interface_read_write_mode_altera = 6180, - mm_host_interface_max_burst_altera = 6181, - mm_host_interface_wait_request_altera = 6182, - stable_kernel_argument_altera = 6183, - host_access_intel = 6188, - init_mode_altera = 6190, - implement_in_register_map_altera = 6191, - conditional_intel = 6247, - cache_control_load_intel = 6442, - cache_control_store_intel = 6443, pub const Extended = union(Decoration) { relaxed_precision, @@ -4916,106 +3894,17 @@ pub const Decoration = enum(u32) { saturated_to_largest_float8normal_conversion_ext, no_signed_wrap, no_unsigned_wrap, - weight_texture_qcom, - block_match_texture_qcom, - block_match_sampler_qcom, - explicit_interp_amd, - node_shares_payload_limits_with_amdx: struct { payload_type: Id }, - node_max_payloads_amdx: struct { max_number_of_payloads: Id }, - track_finish_writing_amdx, - payload_node_name_amdx: struct { node_name: Id }, - payload_node_base_index_amdx: struct { base_index: Id }, - payload_node_sparse_array_amdx, - payload_node_array_size_amdx: struct { array_size: Id }, - payload_dispatch_indirect_amdx, array_stride_id_ext: struct { array_stride: Id }, offset_id_ext: struct { byte_offset: Id }, utf_encoded_khr, - override_coverage_nv, - passthrough_nv, - viewport_relative_nv, - secondary_viewport_relative_nv: struct { offset: LiteralInteger }, per_primitive_ext, - per_view_nv, - per_task_nv, per_vertex_khr, non_uniform, restrict_pointer, aliased_pointer, - member_offset_nv: struct { member_offset: LiteralInteger }, - hit_object_shader_record_buffer_nv, hit_object_shader_record_buffer_ext, - bank_nv: struct { bank: LiteralInteger }, - bindless_sampler_nv, - bindless_image_nv, - bound_sampler_nv, - bound_image_nv, - simt_call_intel: struct { n: LiteralInteger }, - referenced_indirectly_intel, - clobber_intel: struct { register: LiteralString }, - side_effects_intel, - vector_compute_variable_intel, - func_param_io_kind_intel: struct { kind: LiteralInteger }, - vector_compute_function_intel, - stack_call_intel, - global_variable_offset_intel: struct { offset: LiteralInteger }, counter_buffer: struct { counter_buffer: Id }, user_semantic: struct { semantic: LiteralString }, - user_type_google: struct { user_type: LiteralString }, - function_rounding_mode_intel: struct { target_width: LiteralInteger, fp_rounding_mode: FPRoundingMode }, - function_denorm_mode_intel: struct { target_width: LiteralInteger, fp_denorm_mode: FPDenormMode }, - register_altera, - memory_altera: struct { memory_type: LiteralString }, - numbanks_altera: struct { banks: LiteralInteger }, - bankwidth_altera: struct { bank_width: LiteralInteger }, - max_private_copies_altera: struct { maximum_copies: LiteralInteger }, - singlepump_altera, - doublepump_altera, - max_replicates_altera: struct { maximum_replicates: LiteralInteger }, - simple_dual_port_altera, - merge_altera: struct { merge_key: LiteralString, merge_type: LiteralString }, - bank_bits_altera: struct { bank_bits: []const LiteralInteger = &.{} }, - force_pow2depth_altera: struct { force_key: LiteralInteger }, - stridesize_altera: struct { stride_size: LiteralInteger }, - wordsize_altera: struct { word_size: LiteralInteger }, - true_dual_port_altera, - burst_coalesce_altera, - cache_size_altera: struct { cache_size_in_bytes: LiteralInteger }, - dont_statically_coalesce_altera, - prefetch_altera: struct { prefetcher_size_in_bytes: LiteralInteger }, - stall_enable_altera, - fuse_loops_in_function_altera, - math_op_dsp_mode_altera: struct { mode: LiteralInteger, propagate: LiteralInteger }, - alias_scope_intel: struct { aliasing_scopes_list: Id }, - no_alias_intel: struct { aliasing_scopes_list: Id }, - initiation_interval_altera: struct { cycles: LiteralInteger }, - max_concurrency_altera: struct { invocations: LiteralInteger }, - pipeline_enable_altera: struct { enable: LiteralInteger }, - buffer_location_altera: struct { buffer_location_id: LiteralInteger }, - io_pipe_storage_altera: struct { io_pipe_id: LiteralInteger }, - function_floating_point_mode_intel: struct { target_width: LiteralInteger, fp_operation_mode: FPOperationMode }, - single_element_vector_intel, - vector_compute_callable_function_intel, - media_block_iointel, - stall_free_altera, - fp_max_error_decoration_intel: struct { max_error: LiteralFloat }, - latency_control_label_altera: struct { latency_label: LiteralInteger }, - latency_control_constraint_altera: struct { relative_to: LiteralInteger, control_type: LiteralInteger, relative_cycle: LiteralInteger }, - conduit_kernel_argument_altera, - register_map_kernel_argument_altera, - mm_host_interface_address_width_altera: struct { address_width: LiteralInteger }, - mm_host_interface_data_width_altera: struct { data_width: LiteralInteger }, - mm_host_interface_latency_altera: struct { latency: LiteralInteger }, - mm_host_interface_read_write_mode_altera: struct { read_write_mode: AccessQualifier }, - mm_host_interface_max_burst_altera: struct { max_burst_count: LiteralInteger }, - mm_host_interface_wait_request_altera: struct { waitrequest: LiteralInteger }, - stable_kernel_argument_altera, - host_access_intel: struct { access: HostAccessQualifier, name: LiteralString }, - init_mode_altera: struct { trigger: InitializationModeQualifier }, - implement_in_register_map_altera: struct { value: LiteralInteger }, - conditional_intel: struct { condition: Id }, - cache_control_load_intel: struct { cache_level: LiteralInteger, cache_control: LoadCacheControl }, - cache_control_store_intel: struct { cache_level: LiteralInteger, cache_control: StoreCacheControl }, }; }; pub const BuiltIn = enum(u32) { @@ -5077,35 +3966,10 @@ pub const BuiltIn = enum(u32) { device_index = 4438, view_index = 4440, shading_rate_khr = 4444, - tile_offset_qcom = 4492, - tile_dimension_qcom = 4493, - tile_apron_size_qcom = 4494, - bary_coord_no_persp_amd = 4992, - bary_coord_no_persp_centroid_amd = 4993, - bary_coord_no_persp_sample_amd = 4994, - bary_coord_smooth_amd = 4995, - bary_coord_smooth_centroid_amd = 4996, - bary_coord_smooth_sample_amd = 4997, - bary_coord_pull_model_amd = 4998, frag_stencil_ref_ext = 5014, - remaining_recursion_levels_amdx = 5021, - shader_index_amdx = 5073, sampler_heap_ext = 5122, resource_heap_ext = 5123, - viewport_mask_nv = 5253, - secondary_position_nv = 5257, - secondary_viewport_mask_nv = 5258, - position_per_view_nv = 5261, - viewport_mask_per_view_nv = 5262, fully_covered_ext = 5264, - task_count_nv = 5274, - primitive_count_nv = 5275, - primitive_indices_nv = 5276, - clip_distance_per_view_nv = 5277, - cull_distance_per_view_nv = 5278, - layer_per_view_nv = 5279, - mesh_view_count_nv = 5280, - mesh_view_indices_nv = 5281, bary_coord_khr = 5286, bary_coord_no_persp_khr = 5287, frag_size_ext = 5292, @@ -5125,27 +3989,10 @@ pub const BuiltIn = enum(u32) { instance_custom_index_khr = 5327, object_to_world_khr = 5330, world_to_object_khr = 5331, - hit_tnv = 5332, hit_kind_khr = 5333, - current_ray_time_nv = 5334, hit_triangle_vertex_positions_khr = 5335, - hit_micro_triangle_vertex_positions_nv = 5337, - hit_micro_triangle_vertex_barycentrics_nv = 5344, incoming_ray_flags_khr = 5351, ray_geometry_index_khr = 5352, - hit_is_sphere_nv = 5359, - hit_is_lssnv = 5360, - hit_sphere_position_nv = 5361, - warps_per_smnv = 5374, - sm_count_nv = 5375, - warp_idnv = 5376, - smidnv = 5377, - hit_lss_positions_nv = 5396, - hit_kind_front_facing_micro_triangle_nv = 5405, - hit_kind_back_facing_micro_triangle_nv = 5406, - hit_sphere_radius_nv = 5420, - hit_lss_radii_nv = 5421, - cluster_idnv = 5436, cull_mask_khr = 6021, }; pub const Scope = enum(u32) { @@ -5342,608 +4189,173 @@ pub const Capability = enum(u32) { pub fn dependencies(self: Capability) []const Extension { return switch (self) { - .matrix => &.{ - .v1_0, - }, - .shader => &.{ - .v1_0, - }, - .geometry => &.{ - .v1_0, - }, - .tessellation => &.{ - .v1_0, - }, - .addresses => &.{ - .v1_0, - }, - .linkage => &.{ - .v1_0, - }, - .kernel => &.{ - .v1_0, - }, - .vector16 => &.{ - .v1_0, - }, - .float16buffer => &.{ - .v1_0, - }, - .float16 => &.{ - .v1_0, - }, - .float64 => &.{ - .v1_0, - }, - .int64 => &.{ - .v1_0, - }, - .int64atomics => &.{ - .v1_0, - }, - .image_basic => &.{ - .v1_0, - }, - .image_read_write => &.{ - .v1_0, - }, - .image_mipmap => &.{ - .v1_0, - }, - .pipes => &.{ - .v1_0, - }, - .groups => &.{ - .v1_0, - }, - .device_enqueue => &.{ - .v1_0, - }, - .literal_sampler => &.{ - .v1_0, - }, - .atomic_storage => &.{ - .v1_0, - }, - .int16 => &.{ - .v1_0, - }, - .tessellation_point_size => &.{ - .v1_0, - }, - .geometry_point_size => &.{ - .v1_0, - }, - .image_gather_extended => &.{ - .v1_0, - }, - .storage_image_multisample => &.{ - .v1_0, - }, - .uniform_buffer_array_dynamic_indexing => &.{ - .v1_0, - }, - .sampled_image_array_dynamic_indexing => &.{ - .v1_0, - }, - .storage_buffer_array_dynamic_indexing => &.{ - .v1_0, - }, - .storage_image_array_dynamic_indexing => &.{ - .v1_0, - }, - .clip_distance => &.{ - .v1_0, - }, - .cull_distance => &.{ - .v1_0, - }, - .image_cube_array => &.{ - .v1_0, - }, - .sample_rate_shading => &.{ - .v1_0, - }, - .image_rect => &.{ - .v1_0, - }, - .sampled_rect => &.{ - .v1_0, - }, - .generic_pointer => &.{ - .v1_0, - }, - .int8 => &.{ - .v1_0, - }, - .input_attachment => &.{ - .v1_0, - }, - .sparse_residency => &.{ - .v1_0, - }, - .min_lod => &.{ - .v1_0, - }, - .sampled_cube_array => &.{ - .v1_0, - }, - .sampled_buffer => &.{ - .v1_0, - }, - .image_buffer => &.{ - .v1_0, - }, - .image_ms_array => &.{ - .v1_0, - }, - .storage_image_extended_formats => &.{ - .v1_0, - }, - .image_query => &.{ - .v1_0, - }, - .derivative_control => &.{ - .v1_0, - }, - .interpolation_function => &.{ - .v1_0, - }, - .transform_feedback => &.{ - .v1_0, - }, - .geometry_streams => &.{ - .v1_0, - }, - .storage_image_read_without_format => &.{ - .v1_0, - }, - .storage_image_write_without_format => &.{ - .v1_0, - }, - .multi_viewport => &.{ - .v1_0, - }, - .subgroup_dispatch => &.{ - .v1_1, - }, - .named_barrier => &.{ - .v1_1, - }, - .pipe_storage => &.{ - .v1_1, - }, - .group_non_uniform => &.{ - .v1_3, - }, - .group_non_uniform_vote => &.{ - .v1_3, - }, - .group_non_uniform_arithmetic => &.{ - .v1_3, - }, - .group_non_uniform_ballot => &.{ - .v1_3, - }, - .group_non_uniform_shuffle => &.{ - .v1_3, - }, - .group_non_uniform_shuffle_relative => &.{ - .v1_3, - }, - .group_non_uniform_clustered => &.{ - .v1_3, - }, - .group_non_uniform_quad => &.{ - .v1_3, - }, - .shader_layer => &.{ - .v1_5, - }, - .shader_viewport_index => &.{ - .v1_5, - }, - .uniform_decoration => &.{ - .v1_6, - }, - .tile_image_color_read_access_ext => &.{ - .v1_0, - .SPV_EXT_shader_tile_image, - }, - .tile_image_depth_read_access_ext => &.{ - .v1_0, - .SPV_EXT_shader_tile_image, - }, - .tile_image_stencil_read_access_ext => &.{ - .v1_0, - .SPV_EXT_shader_tile_image, - }, - .float8ext => &.{ - .v1_0, - .SPV_EXT_float8, - }, - .float8cooperative_matrix_ext => &.{ - .v1_0, - .SPV_EXT_float8, - }, - .fragment_shading_rate_khr => &.{ - .v1_0, - .SPV_KHR_fragment_shading_rate, - }, - .subgroup_ballot_khr => &.{ - .v1_0, - .SPV_KHR_shader_ballot, - }, - .draw_parameters => &.{ - .v1_3, - .SPV_KHR_shader_draw_parameters, - }, - .workgroup_memory_explicit_layout_khr => &.{ - .v1_0, - .SPV_KHR_workgroup_memory_explicit_layout, - }, - .workgroup_memory_explicit_layout8bit_access_khr => &.{ - .v1_0, - .SPV_KHR_workgroup_memory_explicit_layout, - }, - .workgroup_memory_explicit_layout16bit_access_khr => &.{ - .v1_0, - .SPV_KHR_workgroup_memory_explicit_layout, - }, - .subgroup_vote_khr => &.{ - .v1_0, - .SPV_KHR_subgroup_vote, - }, - .storage_buffer16bit_access => &.{ - .v1_3, - .SPV_KHR_16bit_storage, - }, - .uniform_and_storage_buffer16bit_access => &.{ - .v1_3, - .SPV_KHR_16bit_storage, - }, - .storage_push_constant16 => &.{ - .v1_3, - .SPV_KHR_16bit_storage, - }, - .storage_input_output16 => &.{ - .v1_3, - .SPV_KHR_16bit_storage, - }, - .device_group => &.{ - .v1_3, - .SPV_KHR_device_group, - }, - .multi_view => &.{ - .v1_3, - .SPV_KHR_multiview, - }, - .variable_pointers_storage_buffer => &.{ - .v1_3, - .SPV_KHR_variable_pointers, - }, - .variable_pointers => &.{ - .v1_3, - .SPV_KHR_variable_pointers, - }, - .atomic_storage_ops => &.{ - .v1_0, - .SPV_KHR_shader_atomic_counter_ops, - }, - .sample_mask_post_depth_coverage => &.{ - .v1_0, - .SPV_KHR_post_depth_coverage, - }, - .storage_buffer8bit_access => &.{ - .v1_5, - .SPV_KHR_8bit_storage, - }, - .uniform_and_storage_buffer8bit_access => &.{ - .v1_5, - .SPV_KHR_8bit_storage, - }, - .storage_push_constant8 => &.{ - .v1_5, - .SPV_KHR_8bit_storage, - }, - .denorm_preserve => &.{ - .v1_4, - .SPV_KHR_float_controls, - }, - .denorm_flush_to_zero => &.{ - .v1_4, - .SPV_KHR_float_controls, - }, - .signed_zero_inf_nan_preserve => &.{ - .v1_4, - .SPV_KHR_float_controls, - }, - .ray_query_provisional_khr => &.{ - .v1_0, - .SPV_KHR_ray_query, - }, - .ray_query_khr => &.{ - .v1_0, - .SPV_KHR_ray_query, - }, - .untyped_pointers_khr => &.{ - .v1_0, - .SPV_KHR_untyped_pointers, - }, - .ray_traversal_primitive_culling_khr => &.{ - .v1_0, - .SPV_KHR_ray_query, - .SPV_KHR_ray_tracing, - }, - .ray_tracing_khr => &.{ - .v1_0, - .SPV_KHR_ray_tracing, - }, - .stencil_export_ext => &.{ - .v1_0, - .SPV_EXT_shader_stencil_export, - }, - .int64image_ext => &.{ - .v1_0, - .SPV_EXT_shader_image_int64, - }, - .shader_clock_khr => &.{ - .v1_0, - .SPV_KHR_shader_clock, - }, - .quad_control_khr => &.{ - .v1_0, - .SPV_KHR_quad_control, - }, - .b_float16type_khr => &.{ - .v1_0, - .SPV_KHR_bfloat16, - }, - .b_float16dot_product_khr => &.{ - .v1_0, - .SPV_KHR_bfloat16, - }, - .b_float16cooperative_matrix_khr => &.{ - .v1_0, - .SPV_KHR_bfloat16, - }, - .abort_khr => &.{ - .v1_0, - .SPV_KHR_abort, - }, - .descriptor_heap_ext => &.{ - .v1_0, - .SPV_EXT_descriptor_heap, - }, - .constant_data_khr => &.{ - .v1_0, - .SPV_KHR_constant_data, - }, - .poison_freeze_khr => &.{ - .v1_0, - .SPV_KHR_poison_freeze, - }, - .shader_viewport_index_layer_ext => &.{ - .v1_0, - .SPV_EXT_shader_viewport_index_layer, - }, - .fragment_fully_covered_ext => &.{ - .v1_0, - .SPV_EXT_fragment_fully_covered, - }, - .mesh_shading_ext => &.{ - .v1_0, - .SPV_EXT_mesh_shader, - }, - .fragment_barycentric_khr => &.{ - .v1_0, - .SPV_KHR_fragment_shader_barycentric, - }, - .compute_derivative_group_quads_khr => &.{ - .v1_0, - .SPV_KHR_compute_shader_derivatives, - }, - .fragment_density_ext => &.{ - .v1_0, - .SPV_EXT_fragment_invocation_density, - }, - .group_non_uniform_partitioned_ext => &.{ - .v1_0, - .SPV_EXT_shader_subgroup_partitioned, - }, - .shader_non_uniform => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .runtime_descriptor_array => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .input_attachment_array_dynamic_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .uniform_texel_buffer_array_dynamic_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .storage_texel_buffer_array_dynamic_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .uniform_buffer_array_non_uniform_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .sampled_image_array_non_uniform_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .storage_buffer_array_non_uniform_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .storage_image_array_non_uniform_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .input_attachment_array_non_uniform_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .uniform_texel_buffer_array_non_uniform_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .storage_texel_buffer_array_non_uniform_indexing => &.{ - .v1_5, - .SPV_EXT_descriptor_indexing, - }, - .ray_tracing_position_fetch_khr => &.{ - .v1_0, - .SPV_KHR_ray_tracing_position_fetch, - }, - .vulkan_memory_model => &.{ - .v1_5, - .SPV_KHR_vulkan_memory_model, - }, - .vulkan_memory_model_device_scope => &.{ - .v1_5, - .SPV_KHR_vulkan_memory_model, - }, - .physical_storage_buffer_addresses => &.{ - .v1_5, - .SPV_EXT_physical_storage_buffer, - .SPV_KHR_physical_storage_buffer, - }, - .compute_derivative_group_linear_khr => &.{ - .v1_0, - .SPV_KHR_compute_shader_derivatives, - }, - .ray_tracing_provisional_khr => &.{ - .v1_0, - .SPV_KHR_ray_tracing, - }, - .fragment_shader_sample_interlock_ext => &.{ - .v1_0, - .SPV_EXT_fragment_shader_interlock, - }, - .fragment_shader_shading_rate_interlock_ext => &.{ - .v1_0, - .SPV_EXT_fragment_shader_interlock, - }, - .fragment_shader_pixel_interlock_ext => &.{ - .v1_0, - .SPV_EXT_fragment_shader_interlock, - }, - .demote_to_helper_invocation => &.{ - .v1_6, - .SPV_EXT_demote_to_helper_invocation, - }, - .ray_tracing_opacity_micromap_ext => &.{ - .v1_0, - .SPV_EXT_opacity_micromap, - }, - .shader_invocation_reorder_ext => &.{ - .v1_0, - .SPV_EXT_shader_invocation_reorder, - }, - .ray_query_position_fetch_khr => &.{ - .v1_0, - .SPV_KHR_ray_tracing_position_fetch, - }, - .long_vector_ext => &.{ - .v1_0, - .SPV_EXT_long_vector, - }, - .shader64bit_indexing_ext => &.{ - .v1_0, - .SPV_EXT_shader_64bit_indexing, - }, - .atomic_float32min_max_ext => &.{ - .v1_0, - .SPV_EXT_shader_atomic_float_min_max, - }, - .atomic_float64min_max_ext => &.{ - .v1_0, - .SPV_EXT_shader_atomic_float_min_max, - }, - .atomic_float16min_max_ext => &.{ - .v1_0, - .SPV_EXT_shader_atomic_float_min_max, - }, - .expect_assume_khr => &.{ - .v1_0, - .SPV_KHR_expect_assume, - }, - .dot_product_input_all => &.{ - .v1_6, - .SPV_KHR_integer_dot_product, - }, - .dot_product_input4x8bit => &.{ - .v1_6, - .SPV_KHR_integer_dot_product, - }, - .dot_product_input4x8bit_packed => &.{ - .v1_6, - .SPV_KHR_integer_dot_product, - }, - .dot_product => &.{ - .v1_6, - .SPV_KHR_integer_dot_product, - }, - .ray_cull_mask_khr => &.{ - .v1_0, - .SPV_KHR_ray_cull_mask, - }, - .cooperative_matrix_khr => &.{ - .v1_0, - .SPV_KHR_cooperative_matrix, - }, - .replicated_composites_ext => &.{ - .v1_0, - .SPV_EXT_replicated_composites, - }, - .bit_instructions => &.{ - .v1_0, - .SPV_KHR_bit_instructions, - }, - .group_non_uniform_rotate_khr => &.{ - .v1_0, - .SPV_KHR_subgroup_rotate, - }, - .float_controls2 => &.{ - .v1_0, - .SPV_KHR_float_controls2, - }, - .fmakhr => &.{ - .v1_0, - .SPV_KHR_fma, - }, - .atomic_float32add_ext => &.{ - .v1_0, - .SPV_EXT_shader_atomic_float_add, - }, - .atomic_float64add_ext => &.{ - .v1_0, - .SPV_EXT_shader_atomic_float_add, - }, - .opt_none_ext => &.{ - .v1_0, - .SPV_EXT_optnone, - }, - .atomic_float16add_ext => &.{ - .v1_0, - .SPV_EXT_shader_atomic_float16_add, - }, - .arithmetic_fence_ext => &.{ - .v1_0, - .SPV_EXT_arithmetic_fence, - }, - .group_uniform_arithmetic_khr => &.{ - .v1_0, - .SPV_KHR_uniform_group_instructions, - }, + .matrix => &.{.v1_0}, + .shader => &.{.v1_0}, + .geometry => &.{.v1_0}, + .tessellation => &.{.v1_0}, + .addresses => &.{.v1_0}, + .linkage => &.{.v1_0}, + .kernel => &.{.v1_0}, + .vector16 => &.{.v1_0}, + .float16buffer => &.{.v1_0}, + .float16 => &.{.v1_0}, + .float64 => &.{.v1_0}, + .int64 => &.{.v1_0}, + .int64atomics => &.{.v1_0}, + .image_basic => &.{.v1_0}, + .image_read_write => &.{.v1_0}, + .image_mipmap => &.{.v1_0}, + .pipes => &.{.v1_0}, + .groups => &.{.v1_0}, + .device_enqueue => &.{.v1_0}, + .literal_sampler => &.{.v1_0}, + .atomic_storage => &.{.v1_0}, + .int16 => &.{.v1_0}, + .tessellation_point_size => &.{.v1_0}, + .geometry_point_size => &.{.v1_0}, + .image_gather_extended => &.{.v1_0}, + .storage_image_multisample => &.{.v1_0}, + .uniform_buffer_array_dynamic_indexing => &.{.v1_0}, + .sampled_image_array_dynamic_indexing => &.{.v1_0}, + .storage_buffer_array_dynamic_indexing => &.{.v1_0}, + .storage_image_array_dynamic_indexing => &.{.v1_0}, + .clip_distance => &.{.v1_0}, + .cull_distance => &.{.v1_0}, + .image_cube_array => &.{.v1_0}, + .sample_rate_shading => &.{.v1_0}, + .image_rect => &.{.v1_0}, + .sampled_rect => &.{.v1_0}, + .generic_pointer => &.{.v1_0}, + .int8 => &.{.v1_0}, + .input_attachment => &.{.v1_0}, + .sparse_residency => &.{.v1_0}, + .min_lod => &.{.v1_0}, + .sampled_cube_array => &.{.v1_0}, + .sampled_buffer => &.{.v1_0}, + .image_buffer => &.{.v1_0}, + .image_ms_array => &.{.v1_0}, + .storage_image_extended_formats => &.{.v1_0}, + .image_query => &.{.v1_0}, + .derivative_control => &.{.v1_0}, + .interpolation_function => &.{.v1_0}, + .transform_feedback => &.{.v1_0}, + .geometry_streams => &.{.v1_0}, + .storage_image_read_without_format => &.{.v1_0}, + .storage_image_write_without_format => &.{.v1_0}, + .multi_viewport => &.{.v1_0}, + .subgroup_dispatch => &.{.v1_1}, + .named_barrier => &.{.v1_1}, + .pipe_storage => &.{.v1_1}, + .group_non_uniform => &.{.v1_3}, + .group_non_uniform_vote => &.{.v1_3}, + .group_non_uniform_arithmetic => &.{.v1_3}, + .group_non_uniform_ballot => &.{.v1_3}, + .group_non_uniform_shuffle => &.{.v1_3}, + .group_non_uniform_shuffle_relative => &.{.v1_3}, + .group_non_uniform_clustered => &.{.v1_3}, + .group_non_uniform_quad => &.{.v1_3}, + .shader_layer => &.{.v1_5}, + .shader_viewport_index => &.{.v1_5}, + .uniform_decoration => &.{.v1_6}, + .tile_image_color_read_access_ext => &.{ .v1_0, .SPV_EXT_shader_tile_image }, + .tile_image_depth_read_access_ext => &.{ .v1_0, .SPV_EXT_shader_tile_image }, + .tile_image_stencil_read_access_ext => &.{ .v1_0, .SPV_EXT_shader_tile_image }, + .float8ext => &.{ .v1_0, .SPV_EXT_float8 }, + .float8cooperative_matrix_ext => &.{ .v1_0, .SPV_EXT_float8 }, + .fragment_shading_rate_khr => &.{ .v1_0, .SPV_KHR_fragment_shading_rate }, + .subgroup_ballot_khr => &.{ .v1_0, .SPV_KHR_shader_ballot }, + .draw_parameters => &.{ .v1_3, .SPV_KHR_shader_draw_parameters }, + .workgroup_memory_explicit_layout_khr => &.{ .v1_0, .SPV_KHR_workgroup_memory_explicit_layout }, + .workgroup_memory_explicit_layout8bit_access_khr => &.{ .v1_0, .SPV_KHR_workgroup_memory_explicit_layout }, + .workgroup_memory_explicit_layout16bit_access_khr => &.{ .v1_0, .SPV_KHR_workgroup_memory_explicit_layout }, + .subgroup_vote_khr => &.{ .v1_0, .SPV_KHR_subgroup_vote }, + .storage_buffer16bit_access => &.{ .v1_3, .SPV_KHR_16bit_storage }, + .uniform_and_storage_buffer16bit_access => &.{ .v1_3, .SPV_KHR_16bit_storage }, + .storage_push_constant16 => &.{ .v1_3, .SPV_KHR_16bit_storage }, + .storage_input_output16 => &.{ .v1_3, .SPV_KHR_16bit_storage }, + .device_group => &.{ .v1_3, .SPV_KHR_device_group }, + .multi_view => &.{ .v1_3, .SPV_KHR_multiview }, + .variable_pointers_storage_buffer => &.{ .v1_3, .SPV_KHR_variable_pointers }, + .variable_pointers => &.{ .v1_3, .SPV_KHR_variable_pointers }, + .atomic_storage_ops => &.{ .v1_0, .SPV_KHR_shader_atomic_counter_ops }, + .sample_mask_post_depth_coverage => &.{ .v1_0, .SPV_KHR_post_depth_coverage }, + .storage_buffer8bit_access => &.{ .v1_5, .SPV_KHR_8bit_storage }, + .uniform_and_storage_buffer8bit_access => &.{ .v1_5, .SPV_KHR_8bit_storage }, + .storage_push_constant8 => &.{ .v1_5, .SPV_KHR_8bit_storage }, + .denorm_preserve => &.{ .v1_4, .SPV_KHR_float_controls }, + .denorm_flush_to_zero => &.{ .v1_4, .SPV_KHR_float_controls }, + .signed_zero_inf_nan_preserve => &.{ .v1_4, .SPV_KHR_float_controls }, + .ray_query_provisional_khr => &.{ .v1_0, .SPV_KHR_ray_query }, + .ray_query_khr => &.{ .v1_0, .SPV_KHR_ray_query }, + .untyped_pointers_khr => &.{ .v1_0, .SPV_KHR_untyped_pointers }, + .ray_traversal_primitive_culling_khr => &.{ .v1_0, .SPV_KHR_ray_query, .SPV_KHR_ray_tracing }, + .ray_tracing_khr => &.{ .v1_0, .SPV_KHR_ray_tracing }, + .stencil_export_ext => &.{ .v1_0, .SPV_EXT_shader_stencil_export }, + .int64image_ext => &.{ .v1_0, .SPV_EXT_shader_image_int64 }, + .shader_clock_khr => &.{ .v1_0, .SPV_KHR_shader_clock }, + .quad_control_khr => &.{ .v1_0, .SPV_KHR_quad_control }, + .b_float16type_khr => &.{ .v1_0, .SPV_KHR_bfloat16 }, + .b_float16dot_product_khr => &.{ .v1_0, .SPV_KHR_bfloat16 }, + .b_float16cooperative_matrix_khr => &.{ .v1_0, .SPV_KHR_bfloat16 }, + .abort_khr => &.{ .v1_0, .SPV_KHR_abort }, + .descriptor_heap_ext => &.{ .v1_0, .SPV_EXT_descriptor_heap }, + .constant_data_khr => &.{ .v1_0, .SPV_KHR_constant_data }, + .poison_freeze_khr => &.{ .v1_0, .SPV_KHR_poison_freeze }, + .shader_viewport_index_layer_ext => &.{ .v1_0, .SPV_EXT_shader_viewport_index_layer }, + .fragment_fully_covered_ext => &.{ .v1_0, .SPV_EXT_fragment_fully_covered }, + .mesh_shading_ext => &.{ .v1_0, .SPV_EXT_mesh_shader }, + .fragment_barycentric_khr => &.{ .v1_0, .SPV_KHR_fragment_shader_barycentric }, + .compute_derivative_group_quads_khr => &.{ .v1_0, .SPV_KHR_compute_shader_derivatives }, + .fragment_density_ext => &.{ .v1_0, .SPV_EXT_fragment_invocation_density }, + .group_non_uniform_partitioned_ext => &.{ .v1_0, .SPV_EXT_shader_subgroup_partitioned }, + .shader_non_uniform => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .runtime_descriptor_array => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .input_attachment_array_dynamic_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .uniform_texel_buffer_array_dynamic_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .storage_texel_buffer_array_dynamic_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .uniform_buffer_array_non_uniform_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .sampled_image_array_non_uniform_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .storage_buffer_array_non_uniform_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .storage_image_array_non_uniform_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .input_attachment_array_non_uniform_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .uniform_texel_buffer_array_non_uniform_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .storage_texel_buffer_array_non_uniform_indexing => &.{ .v1_5, .SPV_EXT_descriptor_indexing }, + .ray_tracing_position_fetch_khr => &.{ .v1_0, .SPV_KHR_ray_tracing_position_fetch }, + .vulkan_memory_model => &.{ .v1_5, .SPV_KHR_vulkan_memory_model }, + .vulkan_memory_model_device_scope => &.{ .v1_5, .SPV_KHR_vulkan_memory_model }, + .physical_storage_buffer_addresses => &.{ .v1_5, .SPV_EXT_physical_storage_buffer, .SPV_KHR_physical_storage_buffer }, + .compute_derivative_group_linear_khr => &.{ .v1_0, .SPV_KHR_compute_shader_derivatives }, + .ray_tracing_provisional_khr => &.{ .v1_0, .SPV_KHR_ray_tracing }, + .fragment_shader_sample_interlock_ext => &.{ .v1_0, .SPV_EXT_fragment_shader_interlock }, + .fragment_shader_shading_rate_interlock_ext => &.{ .v1_0, .SPV_EXT_fragment_shader_interlock }, + .fragment_shader_pixel_interlock_ext => &.{ .v1_0, .SPV_EXT_fragment_shader_interlock }, + .demote_to_helper_invocation => &.{ .v1_6, .SPV_EXT_demote_to_helper_invocation }, + .ray_tracing_opacity_micromap_ext => &.{ .v1_0, .SPV_EXT_opacity_micromap }, + .shader_invocation_reorder_ext => &.{ .v1_0, .SPV_EXT_shader_invocation_reorder }, + .ray_query_position_fetch_khr => &.{ .v1_0, .SPV_KHR_ray_tracing_position_fetch }, + .long_vector_ext => &.{ .v1_0, .SPV_EXT_long_vector }, + .shader64bit_indexing_ext => &.{ .v1_0, .SPV_EXT_shader_64bit_indexing }, + .atomic_float32min_max_ext => &.{ .v1_0, .SPV_EXT_shader_atomic_float_min_max }, + .atomic_float64min_max_ext => &.{ .v1_0, .SPV_EXT_shader_atomic_float_min_max }, + .atomic_float16min_max_ext => &.{ .v1_0, .SPV_EXT_shader_atomic_float_min_max }, + .expect_assume_khr => &.{ .v1_0, .SPV_KHR_expect_assume }, + .dot_product_input_all => &.{ .v1_6, .SPV_KHR_integer_dot_product }, + .dot_product_input4x8bit => &.{ .v1_6, .SPV_KHR_integer_dot_product }, + .dot_product_input4x8bit_packed => &.{ .v1_6, .SPV_KHR_integer_dot_product }, + .dot_product => &.{ .v1_6, .SPV_KHR_integer_dot_product }, + .ray_cull_mask_khr => &.{ .v1_0, .SPV_KHR_ray_cull_mask }, + .cooperative_matrix_khr => &.{ .v1_0, .SPV_KHR_cooperative_matrix }, + .replicated_composites_ext => &.{ .v1_0, .SPV_EXT_replicated_composites }, + .bit_instructions => &.{ .v1_0, .SPV_KHR_bit_instructions }, + .group_non_uniform_rotate_khr => &.{ .v1_0, .SPV_KHR_subgroup_rotate }, + .float_controls2 => &.{ .v1_0, .SPV_KHR_float_controls2 }, + .fmakhr => &.{ .v1_0, .SPV_KHR_fma }, + .atomic_float32add_ext => &.{ .v1_0, .SPV_EXT_shader_atomic_float_add }, + .atomic_float64add_ext => &.{ .v1_0, .SPV_EXT_shader_atomic_float_add }, + .opt_none_ext => &.{ .v1_0, .SPV_EXT_optnone }, + .atomic_float16add_ext => &.{ .v1_0, .SPV_EXT_shader_atomic_float16_add }, + .arithmetic_fence_ext => &.{ .v1_0, .SPV_EXT_arithmetic_fence }, + .group_uniform_arithmetic_khr => &.{ .v1_0, .SPV_KHR_uniform_group_instructions }, }; } }; @@ -5963,84 +4375,28 @@ pub const RayQueryCandidateIntersectionType = enum(u32) { pub const PackedVectorFormat = enum(u32) { packed_vector_format4x8bit = 0, }; -pub const CooperativeMatrixOperands = packed struct { +pub const CooperativeMatrixOperands = packed struct(Word) { matrix_a_signed_components_khr: bool = false, matrix_b_signed_components_khr: bool = false, matrix_c_signed_components_khr: bool = false, matrix_result_signed_components_khr: bool = false, saturating_accumulation_khr: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_5_to_31: u27 = 0, }; pub const CooperativeMatrixLayout = enum(u32) { row_major_khr = 0, column_major_khr = 1, - row_blocked_interleaved_arm = 4202, - column_blocked_interleaved_arm = 4203, }; pub const CooperativeMatrixUse = enum(u32) { matrix_akhr = 0, matrix_bkhr = 1, matrix_accumulator_khr = 2, }; -pub const CooperativeMatrixReduce = packed struct { +pub const CooperativeMatrixReduce = packed struct(Word) { row: bool = false, column: bool = false, @"2x2": bool = false, - _reserved_bit_3: bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_3_to_31: u29 = 0, }; pub const TensorClampMode = enum(u32) { undefined = 0, @@ -6049,96 +4405,14 @@ pub const TensorClampMode = enum(u32) { repeat = 3, repeat_mirrored = 4, }; -pub const TensorAddressingOperands = packed struct { - tensor_view: bool = false, - decode_func: bool = false, - _reserved_bit_2: bool = false, - _reserved_bit_3: bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, - - pub const Extended = struct { - tensor_view: ?struct { id_ref: Id } = null, - decode_func: ?struct { id_ref: Id } = null, - _reserved_bit_2: bool = false, - _reserved_bit_3: bool = false, - _reserved_bit_4: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, - }; -}; -pub const InitializationModeQualifier = enum(u32) { - init_on_device_reprogram_altera = 0, - init_on_device_reset_altera = 1, -}; -pub const LoadCacheControl = enum(u32) { - uncached_intel = 0, - cached_intel = 1, - streaming_intel = 2, - invalidate_after_read_intel = 3, - const_cached_intel = 4, -}; -pub const StoreCacheControl = enum(u32) { - uncached_intel = 0, - write_through_intel = 1, - write_back_intel = 2, - streaming_intel = 3, -}; -pub const NamedMaximumNumberOfRegisters = enum(u32) { - auto_intel = 0, -}; -pub const MatrixMultiplyAccumulateOperands = packed struct { +pub const TensorAddressingOperands = packed struct(Word) { + _reserved_bits_0_to_31: u32 = 0, +}; +pub const InitializationModeQualifier = enum(u32) {}; +pub const LoadCacheControl = enum(u32) {}; +pub const StoreCacheControl = enum(u32) {}; +pub const NamedMaximumNumberOfRegisters = enum(u32) {}; +pub const MatrixMultiplyAccumulateOperands = packed struct(Word) { matrix_a_signed_components_intel: bool = false, matrix_b_signed_components_intel: bool = false, matrix_cb_float16intel: bool = false, @@ -6153,24 +4427,7 @@ pub const MatrixMultiplyAccumulateOperands = packed struct { matrix_b_packed_float16intel: bool = false, matrix_a_packed_b_float16intel: bool = false, matrix_b_packed_b_float16intel: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, + _reserved_bits_14_to_31: u18 = 0, }; pub const FPEncoding = enum(u32) { b_float16khr = 0, @@ -6200,10845 +4457,19 @@ pub const ComponentType = enum(u32) { float_e4m3nv = 1000491002, float_e5m2nv = 1000491003, }; -pub const TensorOperands = packed struct { - nontemporal_arm: bool = false, - out_of_bounds_value_arm: bool = false, - make_element_available_arm: bool = false, - make_element_visible_arm: bool = false, - non_private_element_arm: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, - - pub const Extended = struct { - nontemporal_arm: bool = false, - out_of_bounds_value_arm: ?struct { id_ref: Id } = null, - make_element_available_arm: ?struct { id_ref: Id } = null, - make_element_visible_arm: ?struct { id_ref: Id } = null, - non_private_element_arm: bool = false, - _reserved_bit_5: bool = false, - _reserved_bit_6: bool = false, - _reserved_bit_7: bool = false, - _reserved_bit_8: bool = false, - _reserved_bit_9: bool = false, - _reserved_bit_10: bool = false, - _reserved_bit_11: bool = false, - _reserved_bit_12: bool = false, - _reserved_bit_13: bool = false, - _reserved_bit_14: bool = false, - _reserved_bit_15: bool = false, - _reserved_bit_16: bool = false, - _reserved_bit_17: bool = false, - _reserved_bit_18: bool = false, - _reserved_bit_19: bool = false, - _reserved_bit_20: bool = false, - _reserved_bit_21: bool = false, - _reserved_bit_22: bool = false, - _reserved_bit_23: bool = false, - _reserved_bit_24: bool = false, - _reserved_bit_25: bool = false, - _reserved_bit_26: bool = false, - _reserved_bit_27: bool = false, - _reserved_bit_28: bool = false, - _reserved_bit_29: bool = false, - _reserved_bit_30: bool = false, - _reserved_bit_31: bool = false, - }; +pub const TensorOperands = packed struct(Word) { + _reserved_bits_0_to_31: u32 = 0, }; pub const InstructionSet = enum { core, @"OpenCL.std", @"GLSL.std.450", - zig, - pub fn instructions(self: InstructionSet) []const Instruction { - return switch (self) { - .core => &.{ - .{ - .name = "OpNop", - .opcode = 0, - .operands = &.{}, - }, - .{ - .name = "OpUndef", - .opcode = 1, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSourceContinued", - .opcode = 2, - .operands = &.{ - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpSource", - .opcode = 3, - .operands = &.{ - .{ .kind = .source_language, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .literal_string, .quantifier = .optional }, - }, - }, - .{ - .name = "OpSourceExtension", - .opcode = 4, - .operands = &.{ - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpName", - .opcode = 5, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpMemberName", - .opcode = 6, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpString", - .opcode = 7, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpLine", - .opcode = 8, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpExtension", - .opcode = 10, - .operands = &.{ - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpExtInstImport", - .opcode = 11, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpExtInst", - .opcode = 12, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_ext_inst_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpMemoryModel", - .opcode = 14, - .operands = &.{ - .{ .kind = .addressing_model, .quantifier = .required }, - .{ .kind = .memory_model, .quantifier = .required }, - }, - }, - .{ - .name = "OpEntryPoint", - .opcode = 15, - .operands = &.{ - .{ .kind = .execution_model, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpExecutionMode", - .opcode = 16, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .execution_mode, .quantifier = .required }, - }, - }, - .{ - .name = "OpCapability", - .opcode = 17, - .operands = &.{ - .{ .kind = .capability, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeVoid", - .opcode = 19, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeBool", - .opcode = 20, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeInt", - .opcode = 21, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeFloat", - .opcode = 22, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .fp_encoding, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTypeVector", - .opcode = 23, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeMatrix", - .opcode = 24, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeImage", - .opcode = 25, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .dim, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .image_format, .quantifier = .required }, - .{ .kind = .access_qualifier, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTypeSampler", - .opcode = 26, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeSampledImage", - .opcode = 27, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeArray", - .opcode = 28, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeRuntimeArray", - .opcode = 29, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeStruct", - .opcode = 30, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTypeOpaque", - .opcode = 31, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypePointer", - .opcode = 32, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeFunction", - .opcode = 33, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTypeEvent", - .opcode = 34, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeDeviceEvent", - .opcode = 35, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeReserveId", - .opcode = 36, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeQueue", - .opcode = 37, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypePipe", - .opcode = 38, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .access_qualifier, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeForwardPointer", - .opcode = 39, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantTrue", - .opcode = 41, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantFalse", - .opcode = 42, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstant", - .opcode = 43, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_context_dependent_number, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantComposite", - .opcode = 44, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpConstantSampler", - .opcode = 45, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .sampler_addressing_mode, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .sampler_filter_mode, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantNull", - .opcode = 46, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSpecConstantTrue", - .opcode = 48, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSpecConstantFalse", - .opcode = 49, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSpecConstant", - .opcode = 50, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_context_dependent_number, .quantifier = .required }, - }, - }, - .{ - .name = "OpSpecConstantComposite", - .opcode = 51, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpSpecConstantOp", - .opcode = 52, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_spec_constant_op_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFunction", - .opcode = 54, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .function_control, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFunctionParameter", - .opcode = 55, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpFunctionEnd", - .opcode = 56, - .operands = &.{}, - }, - .{ - .name = "OpFunctionCall", - .opcode = 57, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpVariable", - .opcode = 59, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageTexelPointer", - .opcode = 60, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpLoad", - .opcode = 61, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpStore", - .opcode = 62, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCopyMemory", - .opcode = 63, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCopyMemorySized", - .opcode = 64, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpAccessChain", - .opcode = 65, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpInBoundsAccessChain", - .opcode = 66, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpPtrAccessChain", - .opcode = 67, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpArrayLength", - .opcode = 68, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpGenericPtrMemSemantics", - .opcode = 69, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpInBoundsPtrAccessChain", - .opcode = 70, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpDecorate", - .opcode = 71, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .decoration, .quantifier = .required }, - }, - }, - .{ - .name = "OpMemberDecorate", - .opcode = 72, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .decoration, .quantifier = .required }, - }, - }, - .{ - .name = "OpDecorationGroup", - .opcode = 73, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupDecorate", - .opcode = 74, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpGroupMemberDecorate", - .opcode = 75, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .pair_id_ref_literal_integer, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpVectorExtractDynamic", - .opcode = 77, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpVectorInsertDynamic", - .opcode = 78, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpVectorShuffle", - .opcode = 79, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpCompositeConstruct", - .opcode = 80, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpCompositeExtract", - .opcode = 81, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpCompositeInsert", - .opcode = 82, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpCopyObject", - .opcode = 83, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTranspose", - .opcode = 84, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSampledImage", - .opcode = 86, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSampleImplicitLod", - .opcode = 87, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSampleExplicitLod", - .opcode = 88, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSampleDrefImplicitLod", - .opcode = 89, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSampleDrefExplicitLod", - .opcode = 90, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSampleProjImplicitLod", - .opcode = 91, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSampleProjExplicitLod", - .opcode = 92, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSampleProjDrefImplicitLod", - .opcode = 93, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSampleProjDrefExplicitLod", - .opcode = 94, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageFetch", - .opcode = 95, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageGather", - .opcode = 96, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageDrefGather", - .opcode = 97, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageRead", - .opcode = 98, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageWrite", - .opcode = 99, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImage", - .opcode = 100, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageQueryFormat", - .opcode = 101, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageQueryOrder", - .opcode = 102, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageQuerySizeLod", - .opcode = 103, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageQuerySize", - .opcode = 104, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageQueryLod", - .opcode = 105, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageQueryLevels", - .opcode = 106, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageQuerySamples", - .opcode = 107, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertFToU", - .opcode = 109, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertFToS", - .opcode = 110, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertSToF", - .opcode = 111, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertUToF", - .opcode = 112, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUConvert", - .opcode = 113, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSConvert", - .opcode = 114, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFConvert", - .opcode = 115, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpQuantizeToF16", - .opcode = 116, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertPtrToU", - .opcode = 117, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSatConvertSToU", - .opcode = 118, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSatConvertUToS", - .opcode = 119, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertUToPtr", - .opcode = 120, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpPtrCastToGeneric", - .opcode = 121, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGenericCastToPtr", - .opcode = 122, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGenericCastToPtrExplicit", - .opcode = 123, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitcast", - .opcode = 124, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSNegate", - .opcode = 126, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFNegate", - .opcode = 127, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIAdd", - .opcode = 128, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFAdd", - .opcode = 129, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpISub", - .opcode = 130, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFSub", - .opcode = 131, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIMul", - .opcode = 132, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFMul", - .opcode = 133, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUDiv", - .opcode = 134, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSDiv", - .opcode = 135, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFDiv", - .opcode = 136, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUMod", - .opcode = 137, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSRem", - .opcode = 138, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSMod", - .opcode = 139, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFRem", - .opcode = 140, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFMod", - .opcode = 141, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpVectorTimesScalar", - .opcode = 142, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpMatrixTimesScalar", - .opcode = 143, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpVectorTimesMatrix", - .opcode = 144, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpMatrixTimesVector", - .opcode = 145, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpMatrixTimesMatrix", - .opcode = 146, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpOuterProduct", - .opcode = 147, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpDot", - .opcode = 148, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIAddCarry", - .opcode = 149, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpISubBorrow", - .opcode = 150, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUMulExtended", - .opcode = 151, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSMulExtended", - .opcode = 152, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAny", - .opcode = 154, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAll", - .opcode = 155, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIsNan", - .opcode = 156, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIsInf", - .opcode = 157, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIsFinite", - .opcode = 158, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIsNormal", - .opcode = 159, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSignBitSet", - .opcode = 160, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpLessOrGreater", - .opcode = 161, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpOrdered", - .opcode = 162, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUnordered", - .opcode = 163, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpLogicalEqual", - .opcode = 164, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpLogicalNotEqual", - .opcode = 165, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpLogicalOr", - .opcode = 166, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpLogicalAnd", - .opcode = 167, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpLogicalNot", - .opcode = 168, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSelect", - .opcode = 169, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIEqual", - .opcode = 170, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpINotEqual", - .opcode = 171, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUGreaterThan", - .opcode = 172, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSGreaterThan", - .opcode = 173, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUGreaterThanEqual", - .opcode = 174, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSGreaterThanEqual", - .opcode = 175, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpULessThan", - .opcode = 176, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSLessThan", - .opcode = 177, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpULessThanEqual", - .opcode = 178, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSLessThanEqual", - .opcode = 179, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFOrdEqual", - .opcode = 180, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFUnordEqual", - .opcode = 181, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFOrdNotEqual", - .opcode = 182, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFUnordNotEqual", - .opcode = 183, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFOrdLessThan", - .opcode = 184, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFUnordLessThan", - .opcode = 185, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFOrdGreaterThan", - .opcode = 186, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFUnordGreaterThan", - .opcode = 187, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFOrdLessThanEqual", - .opcode = 188, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFUnordLessThanEqual", - .opcode = 189, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFOrdGreaterThanEqual", - .opcode = 190, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFUnordGreaterThanEqual", - .opcode = 191, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpShiftRightLogical", - .opcode = 194, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpShiftRightArithmetic", - .opcode = 195, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpShiftLeftLogical", - .opcode = 196, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitwiseOr", - .opcode = 197, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitwiseXor", - .opcode = 198, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitwiseAnd", - .opcode = 199, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpNot", - .opcode = 200, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitFieldInsert", - .opcode = 201, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitFieldSExtract", - .opcode = 202, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitFieldUExtract", - .opcode = 203, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitReverse", - .opcode = 204, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitCount", - .opcode = 205, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpDPdx", - .opcode = 207, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpDPdy", - .opcode = 208, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFwidth", - .opcode = 209, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpDPdxFine", - .opcode = 210, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpDPdyFine", - .opcode = 211, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFwidthFine", - .opcode = 212, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpDPdxCoarse", - .opcode = 213, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpDPdyCoarse", - .opcode = 214, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFwidthCoarse", - .opcode = 215, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpEmitVertex", - .opcode = 218, - .operands = &.{}, - }, - .{ - .name = "OpEndPrimitive", - .opcode = 219, - .operands = &.{}, - }, - .{ - .name = "OpEmitStreamVertex", - .opcode = 220, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpEndStreamPrimitive", - .opcode = 221, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpControlBarrier", - .opcode = 224, - .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpMemoryBarrier", - .opcode = 225, - .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicLoad", - .opcode = 227, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicStore", - .opcode = 228, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicExchange", - .opcode = 229, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicCompareExchange", - .opcode = 230, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicCompareExchangeWeak", - .opcode = 231, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicIIncrement", - .opcode = 232, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicIDecrement", - .opcode = 233, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicIAdd", - .opcode = 234, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicISub", - .opcode = 235, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicSMin", - .opcode = 236, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicUMin", - .opcode = 237, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicSMax", - .opcode = 238, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicUMax", - .opcode = 239, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicAnd", - .opcode = 240, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicOr", - .opcode = 241, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicXor", - .opcode = 242, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpPhi", - .opcode = 245, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpLoopMerge", - .opcode = 246, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .loop_control, .quantifier = .required }, - }, - }, - .{ - .name = "OpSelectionMerge", - .opcode = 247, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .selection_control, .quantifier = .required }, - }, - }, - .{ - .name = "OpLabel", - .opcode = 248, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpBranch", - .opcode = 249, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBranchConditional", - .opcode = 250, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpSwitch", - .opcode = 251, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .pair_literal_integer_id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpKill", - .opcode = 252, - .operands = &.{}, - }, - .{ - .name = "OpReturn", - .opcode = 253, - .operands = &.{}, - }, - .{ - .name = "OpReturnValue", - .opcode = 254, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUnreachable", - .opcode = 255, - .operands = &.{}, - }, - .{ - .name = "OpLifetimeStart", - .opcode = 256, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpLifetimeStop", - .opcode = 257, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupAsyncCopy", - .opcode = 259, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupWaitEvents", - .opcode = 260, - .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupAll", - .opcode = 261, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupAny", - .opcode = 262, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupBroadcast", - .opcode = 263, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupIAdd", - .opcode = 264, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupFAdd", - .opcode = 265, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupFMin", - .opcode = 266, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupUMin", - .opcode = 267, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupSMin", - .opcode = 268, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupFMax", - .opcode = 269, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupUMax", - .opcode = 270, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupSMax", - .opcode = 271, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReadPipe", - .opcode = 274, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpWritePipe", - .opcode = 275, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReservedReadPipe", - .opcode = 276, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReservedWritePipe", - .opcode = 277, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReserveReadPipePackets", - .opcode = 278, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReserveWritePipePackets", - .opcode = 279, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCommitReadPipe", - .opcode = 280, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCommitWritePipe", - .opcode = 281, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIsValidReserveId", - .opcode = 282, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGetNumPipePackets", - .opcode = 283, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGetMaxPipePackets", - .opcode = 284, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupReserveReadPipePackets", - .opcode = 285, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupReserveWritePipePackets", - .opcode = 286, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupCommitReadPipe", - .opcode = 287, - .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupCommitWritePipe", - .opcode = 288, - .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpEnqueueMarker", - .opcode = 291, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpEnqueueKernel", - .opcode = 292, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpGetKernelNDrangeSubGroupCount", - .opcode = 293, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGetKernelNDrangeMaxSubGroupSize", - .opcode = 294, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGetKernelWorkGroupSize", - .opcode = 295, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGetKernelPreferredWorkGroupSizeMultiple", - .opcode = 296, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRetainEvent", - .opcode = 297, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReleaseEvent", - .opcode = 298, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCreateUserEvent", - .opcode = 299, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpIsValidEvent", - .opcode = 300, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSetUserEventStatus", - .opcode = 301, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCaptureEventProfilingInfo", - .opcode = 302, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGetDefaultQueue", - .opcode = 303, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpBuildNDRange", - .opcode = 304, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSparseSampleImplicitLod", - .opcode = 305, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSparseSampleExplicitLod", - .opcode = 306, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSparseSampleDrefImplicitLod", - .opcode = 307, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSparseSampleDrefExplicitLod", - .opcode = 308, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSparseSampleProjImplicitLod", - .opcode = 309, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSparseSampleProjExplicitLod", - .opcode = 310, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSparseSampleProjDrefImplicitLod", - .opcode = 311, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSparseSampleProjDrefExplicitLod", - .opcode = 312, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSparseFetch", - .opcode = 313, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSparseGather", - .opcode = 314, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSparseDrefGather", - .opcode = 315, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpImageSparseTexelsResident", - .opcode = 316, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpNoLine", - .opcode = 317, - .operands = &.{}, - }, - .{ - .name = "OpAtomicFlagTestAndSet", - .opcode = 318, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicFlagClear", - .opcode = 319, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSparseRead", - .opcode = 320, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpSizeOf", - .opcode = 321, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypePipeStorage", - .opcode = 322, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantPipeStorage", - .opcode = 323, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpCreatePipeFromPipeStorage", - .opcode = 324, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGetKernelLocalSizeForSubgroupCount", - .opcode = 325, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGetKernelMaxNumSubgroups", - .opcode = 326, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeNamedBarrier", - .opcode = 327, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpNamedBarrierInitialize", - .opcode = 328, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpMemoryNamedBarrier", - .opcode = 329, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpModuleProcessed", - .opcode = 330, - .operands = &.{ - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpExecutionModeId", - .opcode = 331, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .execution_mode, .quantifier = .required }, - }, - }, - .{ - .name = "OpDecorateId", - .opcode = 332, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .decoration, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformElect", - .opcode = 333, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformAll", - .opcode = 334, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformAny", - .opcode = 335, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformAllEqual", - .opcode = 336, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformBroadcast", - .opcode = 337, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformBroadcastFirst", - .opcode = 338, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformBallot", - .opcode = 339, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformInverseBallot", - .opcode = 340, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformBallotBitExtract", - .opcode = 341, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformBallotBitCount", - .opcode = 342, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformBallotFindLSB", - .opcode = 343, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformBallotFindMSB", - .opcode = 344, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformShuffle", - .opcode = 345, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformShuffleXor", - .opcode = 346, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformShuffleUp", - .opcode = 347, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformShuffleDown", - .opcode = 348, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformIAdd", - .opcode = 349, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformFAdd", - .opcode = 350, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformIMul", - .opcode = 351, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformFMul", - .opcode = 352, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformSMin", - .opcode = 353, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformUMin", - .opcode = 354, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformFMin", - .opcode = 355, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformSMax", - .opcode = 356, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformUMax", - .opcode = 357, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformFMax", - .opcode = 358, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformBitwiseAnd", - .opcode = 359, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformBitwiseOr", - .opcode = 360, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformBitwiseXor", - .opcode = 361, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformLogicalAnd", - .opcode = 362, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformLogicalOr", - .opcode = 363, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformLogicalXor", - .opcode = 364, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpGroupNonUniformQuadBroadcast", - .opcode = 365, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformQuadSwap", - .opcode = 366, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCopyLogical", - .opcode = 400, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpPtrEqual", - .opcode = 401, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpPtrNotEqual", - .opcode = 402, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpPtrDiff", - .opcode = 403, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpColorAttachmentReadEXT", - .opcode = 4160, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpDepthAttachmentReadEXT", - .opcode = 4161, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpStencilAttachmentReadEXT", - .opcode = 4162, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTypeTensorARM", - .opcode = 4163, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTensorReadARM", - .opcode = 4164, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .tensor_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTensorWriteARM", - .opcode = 4165, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .tensor_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTensorQuerySizeARM", - .opcode = 4166, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGraphConstantARM", - .opcode = 4181, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpGraphEntryPointARM", - .opcode = 4182, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpGraphARM", - .opcode = 4183, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpGraphInputARM", - .opcode = 4184, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpGraphSetOutputARM", - .opcode = 4185, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpGraphEndARM", - .opcode = 4186, - .operands = &.{}, - }, - .{ - .name = "OpTypeGraphARM", - .opcode = 4190, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTerminateInvocation", - .opcode = 4416, - .operands = &.{}, - }, - .{ - .name = "OpTypeUntypedPointerKHR", - .opcode = 4417, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, - }, - }, - .{ - .name = "OpUntypedVariableKHR", - .opcode = 4418, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpUntypedAccessChainKHR", - .opcode = 4419, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpUntypedInBoundsAccessChainKHR", - .opcode = 4420, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpSubgroupBallotKHR", - .opcode = 4421, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupFirstInvocationKHR", - .opcode = 4422, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUntypedPtrAccessChainKHR", - .opcode = 4423, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpUntypedInBoundsPtrAccessChainKHR", - .opcode = 4424, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpUntypedArrayLengthKHR", - .opcode = 4425, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpUntypedPrefetchKHR", - .opcode = 4426, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpFmaKHR", - .opcode = 4427, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAllKHR", - .opcode = 4428, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAnyKHR", - .opcode = 4429, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAllEqualKHR", - .opcode = 4430, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformRotateKHR", - .opcode = 4431, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpSubgroupReadInvocationKHR", - .opcode = 4432, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpExtInstWithForwardRefsKHR", - .opcode = 4433, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_ext_inst_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpUntypedGroupAsyncCopyKHR", - .opcode = 4434, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTraceRayKHR", - .opcode = 4445, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpExecuteCallableKHR", - .opcode = 4446, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertUToAccelerationStructureKHR", - .opcode = 4447, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIgnoreIntersectionKHR", - .opcode = 4448, - .operands = &.{}, - }, - .{ - .name = "OpTerminateRayKHR", - .opcode = 4449, - .operands = &.{}, - }, - .{ - .name = "OpSDot", - .opcode = 4450, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, - }, - }, - .{ - .name = "OpUDot", - .opcode = 4451, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, - }, - }, - .{ - .name = "OpSUDot", - .opcode = 4452, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, - }, - }, - .{ - .name = "OpSDotAccSat", - .opcode = 4453, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, - }, - }, - .{ - .name = "OpUDotAccSat", - .opcode = 4454, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, - }, - }, - .{ - .name = "OpSUDotAccSat", - .opcode = 4455, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .packed_vector_format, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTypeCooperativeMatrixKHR", - .opcode = 4456, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCooperativeMatrixLoadKHR", - .opcode = 4457, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCooperativeMatrixStoreKHR", - .opcode = 4458, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCooperativeMatrixMulAddKHR", - .opcode = 4459, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .cooperative_matrix_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCooperativeMatrixLengthKHR", - .opcode = 4460, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantCompositeReplicateEXT", - .opcode = 4461, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSpecConstantCompositeReplicateEXT", - .opcode = 4462, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCompositeConstructReplicateEXT", - .opcode = 4463, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeRayQueryKHR", - .opcode = 4472, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryInitializeKHR", - .opcode = 4473, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryTerminateKHR", - .opcode = 4474, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGenerateIntersectionKHR", - .opcode = 4475, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryConfirmIntersectionKHR", - .opcode = 4476, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryProceedKHR", - .opcode = 4477, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionTypeKHR", - .opcode = 4479, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSampleWeightedQCOM", - .opcode = 4480, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageBoxFilterQCOM", - .opcode = 4481, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageBlockMatchSSDQCOM", - .opcode = 4482, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageBlockMatchSADQCOM", - .opcode = 4483, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBitCastArrayQCOM", - .opcode = 4497, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageBlockMatchWindowSSDQCOM", - .opcode = 4500, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageBlockMatchWindowSADQCOM", - .opcode = 4501, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageBlockMatchGatherSSDQCOM", - .opcode = 4502, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageBlockMatchGatherSADQCOM", - .opcode = 4503, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCompositeConstructCoopMatQCOM", - .opcode = 4540, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCompositeExtractCoopMatQCOM", - .opcode = 4541, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpExtractSubArrayQCOM", - .opcode = 4542, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupIAddNonUniformAMD", - .opcode = 5000, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupFAddNonUniformAMD", - .opcode = 5001, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupFMinNonUniformAMD", - .opcode = 5002, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupUMinNonUniformAMD", - .opcode = 5003, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupSMinNonUniformAMD", - .opcode = 5004, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupFMaxNonUniformAMD", - .opcode = 5005, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupUMaxNonUniformAMD", - .opcode = 5006, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupSMaxNonUniformAMD", - .opcode = 5007, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFragmentMaskFetchAMD", - .opcode = 5011, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFragmentFetchAMD", - .opcode = 5012, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReadClockKHR", - .opcode = 5056, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - }, - }, - .{ - .name = "OpAllocateNodePayloadsAMDX", - .opcode = 5074, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpEnqueueNodePayloadsAMDX", - .opcode = 5075, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeNodePayloadArrayAMDX", - .opcode = 5076, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFinishWritingNodePayloadAMDX", - .opcode = 5078, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpNodePayloadArrayLengthAMDX", - .opcode = 5090, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIsNodePayloadValidAMDX", - .opcode = 5101, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantStringAMDX", - .opcode = 5103, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpSpecConstantStringAMDX", - .opcode = 5104, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformQuadAllKHR", - .opcode = 5110, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformQuadAnyKHR", - .opcode = 5111, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeBufferEXT", - .opcode = 5115, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .storage_class, .quantifier = .required }, - }, - }, - .{ - .name = "OpBufferPointerEXT", - .opcode = 5119, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAbortKHR", - .opcode = 5121, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUntypedImageTexelPointerEXT", - .opcode = 5126, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpMemberDecorateIdEXT", - .opcode = 5127, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .decoration, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantSizeOfEXT", - .opcode = 5129, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantDataKHR", - .opcode = 5147, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpSpecConstantDataKHR", - .opcode = 5148, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpPoisonKHR", - .opcode = 5158, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpFreezeKHR", - .opcode = 5159, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordHitMotionNV", - .opcode = 5249, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordHitWithIndexMotionNV", - .opcode = 5250, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordMissMotionNV", - .opcode = 5251, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetWorldToObjectNV", - .opcode = 5252, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetObjectToWorldNV", - .opcode = 5253, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetObjectRayDirectionNV", - .opcode = 5254, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetObjectRayOriginNV", - .opcode = 5255, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectTraceRayMotionNV", - .opcode = 5256, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetShaderRecordBufferHandleNV", - .opcode = 5257, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetShaderBindingTableRecordIndexNV", - .opcode = 5258, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordEmptyNV", - .opcode = 5259, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectTraceRayNV", - .opcode = 5260, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordHitNV", - .opcode = 5261, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordHitWithIndexNV", - .opcode = 5262, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordMissNV", - .opcode = 5263, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectExecuteShaderNV", - .opcode = 5264, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetCurrentTimeNV", - .opcode = 5265, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetAttributesNV", - .opcode = 5266, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetHitKindNV", - .opcode = 5267, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetPrimitiveIndexNV", - .opcode = 5268, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetGeometryIndexNV", - .opcode = 5269, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetInstanceIdNV", - .opcode = 5270, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetInstanceCustomIndexNV", - .opcode = 5271, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetWorldRayDirectionNV", - .opcode = 5272, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetWorldRayOriginNV", - .opcode = 5273, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetRayTMaxNV", - .opcode = 5274, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetRayTMinNV", - .opcode = 5275, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectIsEmptyNV", - .opcode = 5276, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectIsHitNV", - .opcode = 5277, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectIsMissNV", - .opcode = 5278, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReorderThreadWithHitObjectNV", - .opcode = 5279, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpReorderThreadWithHintNV", - .opcode = 5280, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeHitObjectNV", - .opcode = 5281, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpImageSampleFootprintNV", - .opcode = 5283, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .image_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTypeVectorIdEXT", - .opcode = 5288, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCooperativeVectorMatrixMulNV", - .opcode = 5289, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .cooperative_matrix_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCooperativeVectorOuterProductAccumulateNV", - .opcode = 5290, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCooperativeVectorReduceSumAccumulateNV", - .opcode = 5291, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCooperativeVectorMatrixMulAddNV", - .opcode = 5292, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .cooperative_matrix_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCooperativeMatrixConvertNV", - .opcode = 5293, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpEmitMeshTasksEXT", - .opcode = 5294, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpSetMeshOutputsEXT", - .opcode = 5295, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupNonUniformPartitionEXT", - .opcode = 5296, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpWritePackedPrimitiveIndices4x8NV", - .opcode = 5299, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFetchMicroTriangleVertexPositionNV", - .opcode = 5300, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFetchMicroTriangleVertexBarycentricNV", - .opcode = 5301, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCooperativeVectorLoadNV", - .opcode = 5302, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCooperativeVectorStoreNV", - .opcode = 5303, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpHitObjectRecordFromQueryEXT", - .opcode = 5304, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordMissEXT", - .opcode = 5305, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordMissMotionEXT", - .opcode = 5306, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetIntersectionTriangleVertexPositionsEXT", - .opcode = 5307, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetRayFlagsEXT", - .opcode = 5308, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectSetShaderBindingTableRecordIndexEXT", - .opcode = 5309, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectReorderExecuteShaderEXT", - .opcode = 5310, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpHitObjectTraceReorderExecuteEXT", - .opcode = 5311, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpHitObjectTraceMotionReorderExecuteEXT", - .opcode = 5312, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpTypeHitObjectEXT", - .opcode = 5313, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpReorderThreadWithHintEXT", - .opcode = 5314, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReorderThreadWithHitObjectEXT", - .opcode = 5315, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpHitObjectTraceRayEXT", - .opcode = 5316, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectTraceRayMotionEXT", - .opcode = 5317, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectRecordEmptyEXT", - .opcode = 5318, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectExecuteShaderEXT", - .opcode = 5319, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetCurrentTimeEXT", - .opcode = 5320, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetAttributesEXT", - .opcode = 5321, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetHitKindEXT", - .opcode = 5322, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetPrimitiveIndexEXT", - .opcode = 5323, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetGeometryIndexEXT", - .opcode = 5324, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetInstanceIdEXT", - .opcode = 5325, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetInstanceCustomIndexEXT", - .opcode = 5326, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetObjectRayOriginEXT", - .opcode = 5327, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetObjectRayDirectionEXT", - .opcode = 5328, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetWorldRayDirectionEXT", - .opcode = 5329, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetWorldRayOriginEXT", - .opcode = 5330, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetObjectToWorldEXT", - .opcode = 5331, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetWorldToObjectEXT", - .opcode = 5332, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetRayTMaxEXT", - .opcode = 5333, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReportIntersectionKHR", - .opcode = 5334, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIgnoreIntersectionNV", - .opcode = 5335, - .operands = &.{}, - }, - .{ - .name = "OpTerminateRayNV", - .opcode = 5336, - .operands = &.{}, - }, - .{ - .name = "OpTraceNV", - .opcode = 5337, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTraceMotionNV", - .opcode = 5338, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTraceRayMotionNV", - .opcode = 5339, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionTriangleVertexPositionsKHR", - .opcode = 5340, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAccelerationStructureKHR", - .opcode = 5341, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpExecuteCallableNV", - .opcode = 5344, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionClusterIdNV", - .opcode = 5345, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetClusterIdNV", - .opcode = 5346, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetRayTMinEXT", - .opcode = 5347, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetShaderBindingTableRecordIndexEXT", - .opcode = 5348, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetShaderRecordBufferHandleEXT", - .opcode = 5349, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectIsEmptyEXT", - .opcode = 5350, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectIsHitEXT", - .opcode = 5351, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectIsMissEXT", - .opcode = 5352, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeCooperativeMatrixNV", - .opcode = 5358, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCooperativeMatrixLoadNV", - .opcode = 5359, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCooperativeMatrixStoreNV", - .opcode = 5360, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpCooperativeMatrixMulAddNV", - .opcode = 5361, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCooperativeMatrixLengthNV", - .opcode = 5362, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpBeginInvocationInterlockEXT", - .opcode = 5364, - .operands = &.{}, - }, - .{ - .name = "OpEndInvocationInterlockEXT", - .opcode = 5365, - .operands = &.{}, - }, - .{ - .name = "OpCooperativeMatrixReduceNV", - .opcode = 5366, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .cooperative_matrix_reduce, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCooperativeMatrixLoadTensorNV", - .opcode = 5367, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .required }, - .{ .kind = .tensor_addressing_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpCooperativeMatrixStoreTensorNV", - .opcode = 5368, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .required }, - .{ .kind = .tensor_addressing_operands, .quantifier = .required }, - }, - }, - .{ - .name = "OpCooperativeMatrixPerElementOpNV", - .opcode = 5369, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTypeTensorLayoutNV", - .opcode = 5370, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeTensorViewNV", - .opcode = 5371, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpCreateTensorLayoutNV", - .opcode = 5372, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTensorLayoutSetDimensionNV", - .opcode = 5373, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTensorLayoutSetStrideNV", - .opcode = 5374, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTensorLayoutSliceNV", - .opcode = 5375, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTensorLayoutSetClampValueNV", - .opcode = 5376, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCreateTensorViewNV", - .opcode = 5377, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTensorViewSetDimensionNV", - .opcode = 5378, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTensorViewSetStrideNV", - .opcode = 5379, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpDemoteToHelperInvocation", - .opcode = 5380, - .operands = &.{}, - }, - .{ - .name = "OpIsHelperInvocationEXT", - .opcode = 5381, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTensorViewSetClipNV", - .opcode = 5382, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTensorLayoutSetBlockSizeNV", - .opcode = 5384, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpCooperativeMatrixTransposeNV", - .opcode = 5390, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertUToImageNV", - .opcode = 5391, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertUToSamplerNV", - .opcode = 5392, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertImageToUNV", - .opcode = 5393, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertSamplerToUNV", - .opcode = 5394, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertUToSampledImageNV", - .opcode = 5395, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertSampledImageToUNV", - .opcode = 5396, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSamplerImageAddressingModeNV", - .opcode = 5397, - .operands = &.{ - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpRawAccessChainNV", - .opcode = 5398, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .raw_access_chain_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionSpherePositionNV", - .opcode = 5427, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionSphereRadiusNV", - .opcode = 5428, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionLSSPositionsNV", - .opcode = 5429, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionLSSRadiiNV", - .opcode = 5430, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionLSSHitValueNV", - .opcode = 5431, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetSpherePositionNV", - .opcode = 5432, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetSphereRadiusNV", - .opcode = 5433, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetLSSPositionsNV", - .opcode = 5434, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectGetLSSRadiiNV", - .opcode = 5435, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectIsSphereHitNV", - .opcode = 5436, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpHitObjectIsLSSHitNV", - .opcode = 5437, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryIsSphereHitNV", - .opcode = 5438, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryIsLSSHitNV", - .opcode = 5439, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupShuffleINTEL", - .opcode = 5571, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupShuffleDownINTEL", - .opcode = 5572, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupShuffleUpINTEL", - .opcode = 5573, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupShuffleXorINTEL", - .opcode = 5574, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupBlockReadINTEL", - .opcode = 5575, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupBlockWriteINTEL", - .opcode = 5576, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupImageBlockReadINTEL", - .opcode = 5577, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupImageBlockWriteINTEL", - .opcode = 5578, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupImageMediaBlockReadINTEL", - .opcode = 5580, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupImageMediaBlockWriteINTEL", - .opcode = 5581, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUCountLeadingZerosINTEL", - .opcode = 5585, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUCountTrailingZerosINTEL", - .opcode = 5586, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAbsISubINTEL", - .opcode = 5587, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAbsUSubINTEL", - .opcode = 5588, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIAddSatINTEL", - .opcode = 5589, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUAddSatINTEL", - .opcode = 5590, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIAverageINTEL", - .opcode = 5591, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUAverageINTEL", - .opcode = 5592, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIAverageRoundedINTEL", - .opcode = 5593, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUAverageRoundedINTEL", - .opcode = 5594, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpISubSatINTEL", - .opcode = 5595, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUSubSatINTEL", - .opcode = 5596, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpIMul32x16INTEL", - .opcode = 5597, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUMul32x16INTEL", - .opcode = 5598, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConstantFunctionPointerINTEL", - .opcode = 5600, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFunctionPointerCallINTEL", - .opcode = 5601, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpAsmTargetINTEL", - .opcode = 5609, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpAsmINTEL", - .opcode = 5610, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpAsmCallINTEL", - .opcode = 5611, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpAtomicFMinEXT", - .opcode = 5614, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicFMaxEXT", - .opcode = 5615, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAssumeTrueKHR", - .opcode = 5630, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpExpectKHR", - .opcode = 5631, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpDecorateString", - .opcode = 5632, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .decoration, .quantifier = .required }, - }, - }, - .{ - .name = "OpMemberDecorateString", - .opcode = 5633, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .decoration, .quantifier = .required }, - }, - }, - .{ - .name = "OpVmeImageINTEL", - .opcode = 5699, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeVmeImageINTEL", - .opcode = 5700, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcImePayloadINTEL", - .opcode = 5701, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcRefPayloadINTEL", - .opcode = 5702, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcSicPayloadINTEL", - .opcode = 5703, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcMcePayloadINTEL", - .opcode = 5704, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcMceResultINTEL", - .opcode = 5705, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcImeResultINTEL", - .opcode = 5706, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcImeResultSingleReferenceStreamoutINTEL", - .opcode = 5707, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcImeResultDualReferenceStreamoutINTEL", - .opcode = 5708, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcImeSingleReferenceStreaminINTEL", - .opcode = 5709, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcImeDualReferenceStreaminINTEL", - .opcode = 5710, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcRefResultINTEL", - .opcode = 5711, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeAvcSicResultINTEL", - .opcode = 5712, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL", - .opcode = 5713, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL", - .opcode = 5714, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL", - .opcode = 5715, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceSetInterShapePenaltyINTEL", - .opcode = 5716, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL", - .opcode = 5717, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL", - .opcode = 5718, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL", - .opcode = 5719, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL", - .opcode = 5720, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL", - .opcode = 5721, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL", - .opcode = 5722, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL", - .opcode = 5723, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL", - .opcode = 5724, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL", - .opcode = 5725, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL", - .opcode = 5726, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL", - .opcode = 5727, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceSetAcOnlyHaarINTEL", - .opcode = 5728, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL", - .opcode = 5729, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL", - .opcode = 5730, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL", - .opcode = 5731, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceConvertToImePayloadINTEL", - .opcode = 5732, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceConvertToImeResultINTEL", - .opcode = 5733, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceConvertToRefPayloadINTEL", - .opcode = 5734, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceConvertToRefResultINTEL", - .opcode = 5735, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceConvertToSicPayloadINTEL", - .opcode = 5736, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceConvertToSicResultINTEL", - .opcode = 5737, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetMotionVectorsINTEL", - .opcode = 5738, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetInterDistortionsINTEL", - .opcode = 5739, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetBestInterDistortionsINTEL", - .opcode = 5740, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetInterMajorShapeINTEL", - .opcode = 5741, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetInterMinorShapeINTEL", - .opcode = 5742, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetInterDirectionsINTEL", - .opcode = 5743, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetInterMotionVectorCountINTEL", - .opcode = 5744, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetInterReferenceIdsINTEL", - .opcode = 5745, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL", - .opcode = 5746, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeInitializeINTEL", - .opcode = 5747, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeSetSingleReferenceINTEL", - .opcode = 5748, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeSetDualReferenceINTEL", - .opcode = 5749, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeRefWindowSizeINTEL", - .opcode = 5750, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeAdjustRefOffsetINTEL", - .opcode = 5751, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeConvertToMcePayloadINTEL", - .opcode = 5752, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL", - .opcode = 5753, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL", - .opcode = 5754, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL", - .opcode = 5755, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeSetWeightedSadINTEL", - .opcode = 5756, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL", - .opcode = 5757, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL", - .opcode = 5758, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL", - .opcode = 5759, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL", - .opcode = 5760, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL", - .opcode = 5761, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL", - .opcode = 5762, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL", - .opcode = 5763, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL", - .opcode = 5764, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeConvertToMceResultINTEL", - .opcode = 5765, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL", - .opcode = 5766, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetDualReferenceStreaminINTEL", - .opcode = 5767, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL", - .opcode = 5768, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL", - .opcode = 5769, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL", - .opcode = 5770, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL", - .opcode = 5771, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL", - .opcode = 5772, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL", - .opcode = 5773, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL", - .opcode = 5774, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL", - .opcode = 5775, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetBorderReachedINTEL", - .opcode = 5776, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL", - .opcode = 5777, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL", - .opcode = 5778, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL", - .opcode = 5779, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL", - .opcode = 5780, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcFmeInitializeINTEL", - .opcode = 5781, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcBmeInitializeINTEL", - .opcode = 5782, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcRefConvertToMcePayloadINTEL", - .opcode = 5783, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL", - .opcode = 5784, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcRefSetBilinearFilterEnableINTEL", - .opcode = 5785, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL", - .opcode = 5786, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL", - .opcode = 5787, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL", - .opcode = 5788, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL", - .opcode = 5789, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcRefConvertToMceResultINTEL", - .opcode = 5790, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicInitializeINTEL", - .opcode = 5791, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicConfigureSkcINTEL", - .opcode = 5792, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicConfigureIpeLumaINTEL", - .opcode = 5793, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL", - .opcode = 5794, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicGetMotionVectorMaskINTEL", - .opcode = 5795, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicConvertToMcePayloadINTEL", - .opcode = 5796, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL", - .opcode = 5797, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL", - .opcode = 5798, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL", - .opcode = 5799, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicSetBilinearFilterEnableINTEL", - .opcode = 5800, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL", - .opcode = 5801, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL", - .opcode = 5802, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicEvaluateIpeINTEL", - .opcode = 5803, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL", - .opcode = 5804, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL", - .opcode = 5805, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL", - .opcode = 5806, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL", - .opcode = 5807, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicConvertToMceResultINTEL", - .opcode = 5808, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicGetIpeLumaShapeINTEL", - .opcode = 5809, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL", - .opcode = 5810, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL", - .opcode = 5811, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL", - .opcode = 5812, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicGetIpeChromaModeINTEL", - .opcode = 5813, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL", - .opcode = 5814, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL", - .opcode = 5815, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupAvcSicGetInterRawSadsINTEL", - .opcode = 5816, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpVariableLengthArrayINTEL", - .opcode = 5818, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSaveMemoryINTEL", - .opcode = 5819, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpRestoreMemoryINTEL", - .opcode = 5820, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatSinCosPiALTERA", - .opcode = 5840, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatCastALTERA", - .opcode = 5841, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatCastFromIntALTERA", - .opcode = 5842, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatCastToIntALTERA", - .opcode = 5843, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatAddALTERA", - .opcode = 5846, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatSubALTERA", - .opcode = 5847, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatMulALTERA", - .opcode = 5848, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatDivALTERA", - .opcode = 5849, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatGTALTERA", - .opcode = 5850, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatGEALTERA", - .opcode = 5851, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatLTALTERA", - .opcode = 5852, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatLEALTERA", - .opcode = 5853, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatEQALTERA", - .opcode = 5854, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatRecipALTERA", - .opcode = 5855, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatRSqrtALTERA", - .opcode = 5856, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatCbrtALTERA", - .opcode = 5857, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatHypotALTERA", - .opcode = 5858, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatSqrtALTERA", - .opcode = 5859, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatLogINTEL", - .opcode = 5860, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatLog2INTEL", - .opcode = 5861, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatLog10INTEL", - .opcode = 5862, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatLog1pINTEL", - .opcode = 5863, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatExpINTEL", - .opcode = 5864, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatExp2INTEL", - .opcode = 5865, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatExp10INTEL", - .opcode = 5866, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatExpm1INTEL", - .opcode = 5867, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatSinINTEL", - .opcode = 5868, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatCosINTEL", - .opcode = 5869, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatSinCosINTEL", - .opcode = 5870, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatSinPiINTEL", - .opcode = 5871, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatCosPiINTEL", - .opcode = 5872, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatASinINTEL", - .opcode = 5873, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatASinPiINTEL", - .opcode = 5874, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatACosINTEL", - .opcode = 5875, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatACosPiINTEL", - .opcode = 5876, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatATanINTEL", - .opcode = 5877, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatATanPiINTEL", - .opcode = 5878, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatATan2INTEL", - .opcode = 5879, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatPowINTEL", - .opcode = 5880, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatPowRINTEL", - .opcode = 5881, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpArbitraryFloatPowNINTEL", - .opcode = 5882, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpLoopControlINTEL", - .opcode = 5887, - .operands = &.{ - .{ .kind = .literal_integer, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpAliasDomainDeclINTEL", - .opcode = 5911, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpAliasScopeDeclINTEL", - .opcode = 5912, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .optional }, - }, - }, - .{ - .name = "OpAliasScopeListDeclINTEL", - .opcode = 5913, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpFixedSqrtALTERA", - .opcode = 5923, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedRecipALTERA", - .opcode = 5924, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedRsqrtALTERA", - .opcode = 5925, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedSinALTERA", - .opcode = 5926, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedCosALTERA", - .opcode = 5927, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedSinCosALTERA", - .opcode = 5928, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedSinPiALTERA", - .opcode = 5929, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedCosPiALTERA", - .opcode = 5930, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedSinCosPiALTERA", - .opcode = 5931, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedLogALTERA", - .opcode = 5932, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpFixedExpALTERA", - .opcode = 5933, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpPtrCastToCrossWorkgroupALTERA", - .opcode = 5934, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpCrossWorkgroupCastToPtrALTERA", - .opcode = 5938, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpReadPipeBlockingALTERA", - .opcode = 5946, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpWritePipeBlockingALTERA", - .opcode = 5947, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFPGARegALTERA", - .opcode = 5949, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetRayTMinKHR", - .opcode = 6016, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetRayFlagsKHR", - .opcode = 6017, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionTKHR", - .opcode = 6018, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionInstanceCustomIndexKHR", - .opcode = 6019, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionInstanceIdKHR", - .opcode = 6020, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR", - .opcode = 6021, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionGeometryIndexKHR", - .opcode = 6022, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionPrimitiveIndexKHR", - .opcode = 6023, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionBarycentricsKHR", - .opcode = 6024, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionFrontFaceKHR", - .opcode = 6025, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR", - .opcode = 6026, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionObjectRayDirectionKHR", - .opcode = 6027, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionObjectRayOriginKHR", - .opcode = 6028, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetWorldRayDirectionKHR", - .opcode = 6029, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetWorldRayOriginKHR", - .opcode = 6030, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionObjectToWorldKHR", - .opcode = 6031, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRayQueryGetIntersectionWorldToObjectKHR", - .opcode = 6032, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpAtomicFAddEXT", - .opcode = 6035, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeBufferSurfaceINTEL", - .opcode = 6086, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .access_qualifier, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeStructContinuedINTEL", - .opcode = 6090, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpConstantCompositeContinuedINTEL", - .opcode = 6091, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpSpecConstantCompositeContinuedINTEL", - .opcode = 6092, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpCompositeConstructContinuedINTEL", - .opcode = 6096, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpConvertFToBF16INTEL", - .opcode = 6116, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertBF16ToFINTEL", - .opcode = 6117, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpControlBarrierArriveINTEL", - .opcode = 6142, - .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpControlBarrierWaitINTEL", - .opcode = 6143, - .operands = &.{ - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .id_memory_semantics, .quantifier = .required }, - }, - }, - .{ - .name = "OpArithmeticFenceEXT", - .opcode = 6145, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTaskSequenceCreateALTERA", - .opcode = 6163, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpTaskSequenceAsyncALTERA", - .opcode = 6164, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpTaskSequenceGetALTERA", - .opcode = 6165, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTaskSequenceReleaseALTERA", - .opcode = 6166, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpTypeTaskSequenceALTERA", - .opcode = 6199, - .operands = &.{ - .{ .kind = .id_result, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupBlockPrefetchINTEL", - .opcode = 6221, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .memory_access, .quantifier = .optional }, - }, - }, - .{ - .name = "OpSubgroup2DBlockLoadINTEL", - .opcode = 6231, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroup2DBlockLoadTransformINTEL", - .opcode = 6232, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroup2DBlockLoadTransposeINTEL", - .opcode = 6233, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroup2DBlockPrefetchINTEL", - .opcode = 6234, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroup2DBlockStoreINTEL", - .opcode = 6235, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpSubgroupMatrixMultiplyAccumulateINTEL", - .opcode = 6237, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .matrix_multiply_accumulate_operands, .quantifier = .optional }, - }, - }, - .{ - .name = "OpBitwiseFunctionINTEL", - .opcode = 6242, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpUntypedVariableLengthArrayINTEL", - .opcode = 6244, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConditionalExtensionINTEL", - .opcode = 6248, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - }, - }, - .{ - .name = "OpConditionalEntryPointINTEL", - .opcode = 6249, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .execution_model, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_string, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpConditionalCapabilityINTEL", - .opcode = 6250, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .capability, .quantifier = .required }, - }, - }, - .{ - .name = "OpSpecConstantTargetINTEL", - .opcode = 6251, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpSpecConstantArchitectureINTEL", - .opcode = 6252, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "OpSpecConstantCapabilitiesINTEL", - .opcode = 6253, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .capability, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpConditionalCopyObjectINTEL", - .opcode = 6254, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "OpGroupIMulKHR", - .opcode = 6401, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupFMulKHR", - .opcode = 6402, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupBitwiseAndKHR", - .opcode = 6403, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupBitwiseOrKHR", - .opcode = 6404, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupBitwiseXorKHR", - .opcode = 6405, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupLogicalAndKHR", - .opcode = 6406, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupLogicalOrKHR", - .opcode = 6407, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpGroupLogicalXorKHR", - .opcode = 6408, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_scope, .quantifier = .required }, - .{ .kind = .group_operation, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpRoundFToTF32INTEL", - .opcode = 6426, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpMaskedGatherINTEL", - .opcode = 6428, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpMaskedScatterINTEL", - .opcode = 6429, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertHandleToImageINTEL", - .opcode = 6529, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertHandleToSamplerINTEL", - .opcode = 6530, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpConvertHandleToSampledImageINTEL", - .opcode = 6531, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFDot2MixAcc32VALVE", - .opcode = 6916, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFDot2MixAcc16VALVE", - .opcode = 6917, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "OpFDot4MixAcc32VALVE", - .opcode = 6918, - .operands = &.{ - .{ .kind = .id_result_type, .quantifier = .required }, - .{ .kind = .id_result, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - }, - .@"OpenCL.std" => &.{ - .{ - .name = "acos", - .opcode = 0, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "acosh", - .opcode = 1, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "acospi", - .opcode = 2, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "asin", - .opcode = 3, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "asinh", - .opcode = 4, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "asinpi", - .opcode = 5, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "atan", - .opcode = 6, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "atan2", - .opcode = 7, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "atanh", - .opcode = 8, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "atanpi", - .opcode = 9, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "atan2pi", - .opcode = 10, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "cbrt", - .opcode = 11, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "ceil", - .opcode = 12, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "copysign", - .opcode = 13, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "cos", - .opcode = 14, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "cosh", - .opcode = 15, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "cospi", - .opcode = 16, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "erfc", - .opcode = 17, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "erf", - .opcode = 18, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "exp", - .opcode = 19, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "exp2", - .opcode = 20, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "exp10", - .opcode = 21, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "expm1", - .opcode = 22, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fabs", - .opcode = 23, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fdim", - .opcode = 24, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "floor", - .opcode = 25, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fma", - .opcode = 26, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fmax", - .opcode = 27, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fmin", - .opcode = 28, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fmod", - .opcode = 29, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fract", - .opcode = 30, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "frexp", - .opcode = 31, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "hypot", - .opcode = 32, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "ilogb", - .opcode = 33, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "ldexp", - .opcode = 34, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "lgamma", - .opcode = 35, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "lgamma_r", - .opcode = 36, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "log", - .opcode = 37, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "log2", - .opcode = 38, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "log10", - .opcode = 39, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "log1p", - .opcode = 40, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "logb", - .opcode = 41, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "mad", - .opcode = 42, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "maxmag", - .opcode = 43, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "minmag", - .opcode = 44, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "modf", - .opcode = 45, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "nan", - .opcode = 46, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "nextafter", - .opcode = 47, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "pow", - .opcode = 48, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "pown", - .opcode = 49, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "powr", - .opcode = 50, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "remainder", - .opcode = 51, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "remquo", - .opcode = 52, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "rint", - .opcode = 53, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "rootn", - .opcode = 54, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "round", - .opcode = 55, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "rsqrt", - .opcode = 56, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "sin", - .opcode = 57, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "sincos", - .opcode = 58, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "sinh", - .opcode = 59, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "sinpi", - .opcode = 60, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "sqrt", - .opcode = 61, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "tan", - .opcode = 62, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "tanh", - .opcode = 63, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "tanpi", - .opcode = 64, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "tgamma", - .opcode = 65, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "trunc", - .opcode = 66, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_cos", - .opcode = 67, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_divide", - .opcode = 68, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_exp", - .opcode = 69, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_exp2", - .opcode = 70, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_exp10", - .opcode = 71, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_log", - .opcode = 72, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_log2", - .opcode = 73, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_log10", - .opcode = 74, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_powr", - .opcode = 75, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_recip", - .opcode = 76, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_rsqrt", - .opcode = 77, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_sin", - .opcode = 78, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_sqrt", - .opcode = 79, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "half_tan", - .opcode = 80, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_cos", - .opcode = 81, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_divide", - .opcode = 82, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_exp", - .opcode = 83, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_exp2", - .opcode = 84, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_exp10", - .opcode = 85, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_log", - .opcode = 86, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_log2", - .opcode = 87, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_log10", - .opcode = 88, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_powr", - .opcode = 89, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_recip", - .opcode = 90, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_rsqrt", - .opcode = 91, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_sin", - .opcode = 92, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_sqrt", - .opcode = 93, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "native_tan", - .opcode = 94, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fclamp", - .opcode = 95, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "degrees", - .opcode = 96, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fmax_common", - .opcode = 97, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fmin_common", - .opcode = 98, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "mix", - .opcode = 99, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "radians", - .opcode = 100, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "step", - .opcode = 101, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "smoothstep", - .opcode = 102, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "sign", - .opcode = 103, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "cross", - .opcode = 104, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "distance", - .opcode = 105, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "length", - .opcode = 106, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "normalize", - .opcode = 107, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fast_distance", - .opcode = 108, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fast_length", - .opcode = 109, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "fast_normalize", - .opcode = 110, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_abs", - .opcode = 141, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_abs_diff", - .opcode = 142, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_add_sat", - .opcode = 143, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_add_sat", - .opcode = 144, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_hadd", - .opcode = 145, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_hadd", - .opcode = 146, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_rhadd", - .opcode = 147, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_rhadd", - .opcode = 148, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_clamp", - .opcode = 149, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_clamp", - .opcode = 150, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "clz", - .opcode = 151, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "ctz", - .opcode = 152, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_mad_hi", - .opcode = 153, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_mad_sat", - .opcode = 154, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_mad_sat", - .opcode = 155, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_max", - .opcode = 156, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_max", - .opcode = 157, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_min", - .opcode = 158, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_min", - .opcode = 159, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_mul_hi", - .opcode = 160, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "rotate", - .opcode = 161, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_sub_sat", - .opcode = 162, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_sub_sat", - .opcode = 163, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_upsample", - .opcode = 164, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_upsample", - .opcode = 165, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "popcount", - .opcode = 166, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_mad24", - .opcode = 167, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_mad24", - .opcode = 168, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "s_mul24", - .opcode = 169, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_mul24", - .opcode = 170, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "vloadn", - .opcode = 171, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "vstoren", - .opcode = 172, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "vload_half", - .opcode = 173, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "vload_halfn", - .opcode = 174, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "vstore_half", - .opcode = 175, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "vstore_half_r", - .opcode = 176, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .fp_rounding_mode, .quantifier = .required }, - }, - }, - .{ - .name = "vstore_halfn", - .opcode = 177, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "vstore_halfn_r", - .opcode = 178, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .fp_rounding_mode, .quantifier = .required }, - }, - }, - .{ - .name = "vloada_halfn", - .opcode = 179, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .literal_integer, .quantifier = .required }, - }, - }, - .{ - .name = "vstorea_halfn", - .opcode = 180, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "vstorea_halfn_r", - .opcode = 181, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .fp_rounding_mode, .quantifier = .required }, - }, - }, - .{ - .name = "shuffle", - .opcode = 182, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "shuffle2", - .opcode = 183, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "printf", - .opcode = 184, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .variadic }, - }, - }, - .{ - .name = "prefetch", - .opcode = 185, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "bitselect", - .opcode = 186, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "select", - .opcode = 187, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_abs", - .opcode = 201, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_abs_diff", - .opcode = 202, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_mul_hi", - .opcode = 203, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "u_mad_hi", - .opcode = 204, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - }, - .@"GLSL.std.450" => &.{ - .{ - .name = "Round", - .opcode = 1, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "RoundEven", - .opcode = 2, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Trunc", - .opcode = 3, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FAbs", - .opcode = 4, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "SAbs", - .opcode = 5, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FSign", - .opcode = 6, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "SSign", - .opcode = 7, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Floor", - .opcode = 8, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Ceil", - .opcode = 9, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Fract", - .opcode = 10, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Radians", - .opcode = 11, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Degrees", - .opcode = 12, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Sin", - .opcode = 13, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Cos", - .opcode = 14, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Tan", - .opcode = 15, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Asin", - .opcode = 16, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Acos", - .opcode = 17, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Atan", - .opcode = 18, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Sinh", - .opcode = 19, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Cosh", - .opcode = 20, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Tanh", - .opcode = 21, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Asinh", - .opcode = 22, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Acosh", - .opcode = 23, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Atanh", - .opcode = 24, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Atan2", - .opcode = 25, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Pow", - .opcode = 26, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Exp", - .opcode = 27, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Log", - .opcode = 28, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Exp2", - .opcode = 29, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Log2", - .opcode = 30, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Sqrt", - .opcode = 31, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "InverseSqrt", - .opcode = 32, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Determinant", - .opcode = 33, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "MatrixInverse", - .opcode = 34, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Modf", - .opcode = 35, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "ModfStruct", - .opcode = 36, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FMin", - .opcode = 37, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "UMin", - .opcode = 38, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "SMin", - .opcode = 39, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FMax", - .opcode = 40, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "UMax", - .opcode = 41, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "SMax", - .opcode = 42, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FClamp", - .opcode = 43, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "UClamp", - .opcode = 44, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "SClamp", - .opcode = 45, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FMix", - .opcode = 46, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "IMix", - .opcode = 47, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Step", - .opcode = 48, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "SmoothStep", - .opcode = 49, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Fma", - .opcode = 50, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Frexp", - .opcode = 51, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FrexpStruct", - .opcode = 52, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Ldexp", - .opcode = 53, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "PackSnorm4x8", - .opcode = 54, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "PackUnorm4x8", - .opcode = 55, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "PackSnorm2x16", - .opcode = 56, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "PackUnorm2x16", - .opcode = 57, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "PackHalf2x16", - .opcode = 58, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "PackDouble2x32", - .opcode = 59, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "UnpackSnorm2x16", - .opcode = 60, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "UnpackUnorm2x16", - .opcode = 61, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "UnpackHalf2x16", - .opcode = 62, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "UnpackSnorm4x8", - .opcode = 63, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "UnpackUnorm4x8", - .opcode = 64, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "UnpackDouble2x32", - .opcode = 65, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Length", - .opcode = 66, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Distance", - .opcode = 67, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Cross", - .opcode = 68, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Normalize", - .opcode = 69, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FaceForward", - .opcode = 70, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Reflect", - .opcode = 71, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "Refract", - .opcode = 72, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FindILsb", - .opcode = 73, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FindSMsb", - .opcode = 74, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "FindUMsb", - .opcode = 75, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "InterpolateAtCentroid", - .opcode = 76, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "InterpolateAtSample", - .opcode = 77, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "InterpolateAtOffset", - .opcode = 78, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "NMin", - .opcode = 79, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "NMax", - .opcode = 80, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - .{ - .name = "NClamp", - .opcode = 81, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - }, - .zig => &.{ - .{ - .name = "InvocationGlobal", - .opcode = 0, - .operands = &.{ - .{ .kind = .id_ref, .quantifier = .required }, - }, - }, - }, + pub fn operands(inst_set: InstructionSet, opcode: Word) ?[]const Operand { + return switch (inst_set) { + .core => if (std.enums.fromInt(Opcode, opcode)) |op| op.operands() else null, + .@"OpenCL.std" => if (std.enums.fromInt(OpenClOpcode, opcode)) |op| op.operands() else null, + .@"GLSL.std.450" => if (std.enums.fromInt(GlslOpcode, opcode)) |op| op.operands() else null, }; } }; diff --git a/src/link/Spirv/Flush.zig b/src/link/Spirv/Flush.zig index a72fcf23f523d235f9acf1b5b0776df42edd2699..c07873869fafb1415441331758c9552f9d26132f 100644 --- a/src/link/Spirv/Flush.zig +++ b/src/link/Spirv/Flush.zig @@ -482,6 +482,7 @@ fn emitCapabilities(flush: *Flush, out: *Section) link.Error!void { } inline for (@typeInfo(spec.Extension).@"enum".field_names) |name| { + if (comptime std.mem.startsWith(u8, name, "v1_")) continue; if (@hasField(std.Target.spirv.Feature, name)) { const feature = @field(std.Target.spirv.Feature, name); if (target.cpu.has(.spirv, feature)) try out.emit(gpa, .OpExtension, .{ .name = name }); diff --git a/tools/gen_spirv_spec.zig b/tools/gen_spirv_spec.zig index d9886a4eb1918af7131f9bb6d21ddc7e65d2e5f8..b9967d378570ede07fa26cfc2aa7870ba9d6fed7 100644 --- a/tools/gen_spirv_spec.zig +++ b/tools/gen_spirv_spec.zig @@ -1,8 +1,8 @@ const std = @import("std"); const Io = std.Io; const Allocator = std.mem.Allocator; +const ExtendedStructSet = std.StringHashMapUnmanaged(void); const assert = std.debug.assert; - const g = @import("spirv/grammar.zig"); const CoreRegistry = g.CoreRegistry; const ExtensionRegistry = g.ExtensionRegistry; @@ -11,49 +11,23 @@ const OperandKind = g.OperandKind; const Enumerant = g.Enumerant; const Operand = g.Operand; -const ExtendedStructSet = std.StringHashMap(void); - -const allowed_vendors = [_][]const u8{ - "KHR", - "EXT", -}; - -fn isAllowedCapability(name: []const u8) bool { - // core capabilities (no vendor suffix) end in a lowercase letter or digit. - const last = name[name.len - 1]; - if (std.ascii.isLower(last) or std.ascii.isDigit(last)) return true; - for (allowed_vendors) |vendor| { - if (std.mem.endsWith(u8, name, vendor)) return true; - } - return false; -} - -fn isAllowedExtension(name: []const u8) bool { - const spv_prefix = "SPV_"; - if (!std.mem.startsWith(u8, name, spv_prefix)) return false; - const tail = name[spv_prefix.len..]; - for (allowed_vendors) |vendor| { - if (std.mem.startsWith(u8, tail, vendor) and - tail.len > vendor.len and tail[vendor.len] == '_') - return true; - } - return false; -} +const allowed_vendors = [_][]const u8{ "KHR", "EXT" }; +const set_names = std.StaticStringMap(struct { []const u8, []const u8 }).initComptime(.{ + .{ "opencl.std.100", .{ "OpenCL.std", "OpenClOpcode" } }, + .{ "glsl.std.450", .{ "GLSL.std.450", "GlslOpcode" } }, +}); const Extension = struct { name: []const u8, opcode_name: []const u8, spec: ExtensionRegistry, }; - const CmpInst = struct { fn lt(_: CmpInst, a: Instruction, b: Instruction) bool { return a.opcode < b.opcode; } }; - const StringPair = struct { []const u8, []const u8 }; - const StringPairContext = struct { pub fn hash(_: @This(), a: StringPair) u32 { var hasher = std.hash.Wyhash.init(0); @@ -70,34 +44,24 @@ const StringPairContext = struct { return std.mem.eql(u8, a_x, b_x) and std.mem.eql(u8, a_y, b_y); } }; - const OperandKindMap = std.array_hash_map.Custom(StringPair, OperandKind, StringPairContext, true); -/// Khronos made it so that these names are not defined explicitly, so -/// we need to hardcode it (like they did). -/// See https://github.com/KhronosGroup/SPIRV-Registry -const set_names = std.StaticStringMap(struct { []const u8, []const u8 }).initComptime(.{ - .{ "opencl.std.100", .{ "OpenCL.std", "OpenClOpcode" } }, - .{ "glsl.std.450", .{ "GLSL.std.450", "GlslOpcode" } }, - .{ "zig", .{ "zig", "Zig" } }, -}); - pub fn main(init: std.process.Init) !void { + const io = init.io; const arena = init.arena.allocator(); const args = try init.minimal.args.toSlice(arena); - if (args.len != 3) { + if (args.len != 2) { usageAndExit(args[0], 1); } - const io = init.io; - const json_path = try Io.Dir.path.join(arena, &.{ args[1], "include/spirv/unified1/" }); const dir = try Io.Dir.cwd().openDir(io, json_path, .{ .iterate = true }); - const core_spec = try readRegistry(io, arena, CoreRegistry, dir, "spirv.core.grammar.json"); + var core_spec = try readRegistry(io, arena, CoreRegistry, dir, "spirv.core.grammar.json"); std.mem.sortUnstable(Instruction, core_spec.instructions, CmpInst{}, CmpInst.lt); + keepEnabled(&core_spec.instructions, core_spec.operand_kinds); - var exts = std.array_list.Managed(Extension).init(arena); + var exts: std.ArrayList(Extension) = .empty; var it = dir.iterate(); while (try it.next(io)) |entry| { @@ -108,8 +72,6 @@ pub fn main(init: std.process.Init) !void { try readExtRegistry(io, arena, &exts, dir, entry.name); } - try readExtRegistry(io, arena, &exts, Io.Dir.cwd(), args[2]); - var allocating: std.Io.Writer.Allocating = .init(arena); defer allocating.deinit(); try render(arena, &allocating.writer, core_spec, exts.items); @@ -117,7 +79,6 @@ pub fn main(init: std.process.Init) !void { const output = allocating.written()[0 .. allocating.written().len - 1 :0]; var tree = try std.zig.Ast.parse(arena, output, .{}); - if (tree.errors.len != 0) { try std.zig.printAstErrorsToStderr(arena, io, tree, "", .auto); return; @@ -138,7 +99,7 @@ pub fn main(init: std.process.Init) !void { try Io.File.stdout().writeStreamingAll(io, formatted_output); } -fn readExtRegistry(io: Io, arena: Allocator, exts: *std.array_list.Managed(Extension), dir: Io.Dir, sub_path: []const u8) !void { +fn readExtRegistry(io: Io, arena: Allocator, exts: *std.ArrayList(Extension), dir: Io.Dir, sub_path: []const u8) !void { const filename = Io.Dir.path.basename(sub_path); if (!std.mem.startsWith(u8, filename, "extinst.")) { return; @@ -146,16 +107,17 @@ fn readExtRegistry(io: Io, arena: Allocator, exts: *std.array_list.Managed(Exten assert(std.mem.endsWith(u8, filename, ".grammar.json")); const name = filename["extinst.".len .. filename.len - ".grammar.json".len]; - const spec = try readRegistry(io, arena, ExtensionRegistry, dir, sub_path); + var spec = try readRegistry(io, arena, ExtensionRegistry, dir, sub_path); const set_name = set_names.get(name) orelse { std.log.info("ignored instruction set '{s}'", .{name}); return; }; - std.sort.block(Instruction, spec.instructions, CmpInst{}, CmpInst.lt); + std.mem.sort(Instruction, spec.instructions, CmpInst{}, CmpInst.lt); + keepEnabled(&spec.instructions, spec.operand_kinds); - try exts.append(.{ + try exts.append(arena, .{ .name = set_name.@"0", .opcode_name = set_name.@"1", .spec = spec, @@ -164,8 +126,6 @@ fn readExtRegistry(io: Io, arena: Allocator, exts: *std.array_list.Managed(Exten fn readRegistry(io: Io, arena: Allocator, comptime RegistryType: type, dir: Io.Dir, path: []const u8) !RegistryType { const spec = try dir.readFileAlloc(io, path, arena, .unlimited); - // Required for json parsing. - // TODO: ALI @setEvalBranchQuota(10000); var scanner = std.json.Scanner.initCompleteInput(arena, spec); @@ -178,11 +138,9 @@ fn readRegistry(io: Io, arena: Allocator, comptime RegistryType: type, dir: Io.D return parsed.value; } -/// Returns a set with types that require an extra struct for the `Instruction` interface -/// to the spir-v spec, or whether the original type can be used. fn extendedStructs(arena: Allocator, kinds: []const OperandKind) !ExtendedStructSet { - var map = ExtendedStructSet.init(arena); - try map.ensureTotalCapacity(@as(u32, @intCast(kinds.len))); + var map: ExtendedStructSet = .empty; + try map.ensureTotalCapacity(arena, @as(u32, @intCast(kinds.len))); for (kinds) |kind| { const enumerants = kind.enumerants orelse continue; @@ -199,10 +157,6 @@ fn extendedStructs(arena: Allocator, kinds: []const OperandKind) !ExtendedStruct return map; } -// Return a score for a particular priority. Duplicate instruction/operand enum values are -// removed by picking the tag with the lowest score to keep, and by making an alias for the -// other. Note that the tag does not need to be just a tag at this point, in which case it -// gets the lowest score automatically anyway. fn tagPriorityScore(tag: []const u8) usize { if (tag.len == 0) { return 1; @@ -223,45 +177,52 @@ fn render( ) !void { try writer.writeAll( \\//! This file is auto-generated by tools/gen_spirv_spec.zig. - \\ \\const std = @import("std"); \\ + \\pub const Word = u32; \\pub const Version = packed struct(Word) { \\ padding: u8 = 0, \\ minor: u8, \\ major: u8, \\ padding0: u8 = 0, - \\ - \\ pub fn toWord(self: @This()) Word { - \\ return @bitCast(self); - \\ } \\}; - \\ - \\pub const Word = u32; + \\pub const Generator = packed struct(Word) { + \\ version: u16, + \\ tool: u16, + \\}; + \\pub const Header = extern struct { + \\ magic: Word, + \\ version: Version, + \\ generator: Generator, + \\ id_bound: Word, + \\ schema: Word, + \\}; + \\pub const InstructionHeader = packed struct(Word) { + \\ opcode: Opcode, + \\ word_count: u16, + \\}; \\pub const Id = enum(Word) { \\ none, \\ _, \\ - \\ pub fn format(self: Id, writer: *std.Io.Writer) std.Io.Writer.Error!void { - \\ switch (self) { + \\ pub fn format(id: Id, writer: *std.Io.Writer) std.Io.Writer.Error!void { + \\ switch (id) { \\ .none => try writer.writeAll("(none)"), - \\ else => try writer.print("%{d}", .{@intFromEnum(self)}), + \\ else => try writer.print("%{d}", .{@backingInt(id)}), \\ } \\ } \\}; - \\ \\pub const IdRange = struct { \\ base: u32, \\ len: u32, \\ \\ pub fn at(range: IdRange, i: usize) Id { \\ std.debug.assert(i < range.len); - \\ return @enumFromInt(range.base + i); + \\ return @fromBackingInt(@intCast(range.base + i)); \\ } \\}; \\ \\pub const LiteralInteger = Word; - \\pub const LiteralFloat = Word; \\pub const LiteralString = []const u8; \\pub const LiteralContextDependentNumber = union(enum) { \\ int32: i32, @@ -285,7 +246,7 @@ fn render( \\ \\pub const Operand = struct { \\ kind: OperandKind, - \\ quantifier: Quantifier, + \\ quantifier: Quantifier = .required, \\}; \\ \\pub const OperandCategory = enum { @@ -299,16 +260,10 @@ fn render( \\pub const Enumerant = struct { \\ name: []const u8, \\ value: Word, - \\ parameters: []const OperandKind, + \\ parameters: []const Operand, \\}; \\ - \\pub const Instruction = struct { - \\ name: []const u8, - \\ opcode: Word, - \\ operands: []const Operand, - \\}; - \\ - \\pub const zig_generator_id: Word = 41; + \\pub const zig_generator_id: u16 = 41; \\ ); @@ -321,17 +276,11 @@ fn render( .{ registry.major_version, registry.minor_version, registry.revision, registry.magic_number }, ); - // Merge the operand kinds from all extensions together. var all_operand_kinds: OperandKindMap = .empty; for (registry.operand_kinds) |kind| { try all_operand_kinds.putNoClobber(arena, .{ "core", kind.kind }, kind); } for (extensions) |ext| { - // Note: extensions may define the same operand kind, with different - // parameters. Instead of trying to merge them, just discriminate them - // using the name of the extension. This is similar to what - // the official headers do. - try all_operand_kinds.ensureUnusedCapacity(arena, ext.spec.operand_kinds.len); for (ext.spec.operand_kinds) |kind| { var new_kind = kind; @@ -340,19 +289,19 @@ fn render( } } - const extended_structs = try extendedStructs(arena, all_operand_kinds.values()); - // Note: extensions don't seem to have class. + const kinds = all_operand_kinds.values(); + const extended_structs = try extendedStructs(arena, kinds); try renderClass(arena, writer, registry.instructions); - try renderOperandKind(writer, all_operand_kinds.values()); + try renderOperandKind(writer, kinds); - try renderOpcodes(arena, writer, "Opcode", true, registry.instructions, extended_structs); + try renderOpcodes(arena, writer, "core", "Opcode", true, registry.instructions, extended_structs, all_operand_kinds); for (extensions) |ext| { - try renderOpcodes(arena, writer, ext.opcode_name, false, ext.spec.instructions, extended_structs); + try renderOpcodes(arena, writer, ext.name, ext.opcode_name, false, ext.spec.instructions, extended_structs, all_operand_kinds); } - try renderOperandKinds(arena, writer, all_operand_kinds.values(), extended_structs); - try renderInstructionSet(writer, registry, extensions, all_operand_kinds); - try renderExtension(arena, writer, all_operand_kinds.values()); + try renderOperandKinds(arena, writer, kinds, extended_structs); + try renderInstructionSet(writer, extensions); + try renderExtension(arena, writer, kinds); } fn renderExtension( @@ -378,7 +327,6 @@ fn renderExtension( for (kinds) |kind| { if (std.mem.eql(u8, "Capability", kind.kind)) { for (kind.enumerants.?) |enumerant| { - if (!isAllowedCapability(enumerant.enumerant)) continue; for (enumerant.extensions) |ext| { if (!isAllowedExtension(ext)) continue; if (seen_extensions.contains(ext)) continue; @@ -393,9 +341,7 @@ fn renderExtension( fn renderInstructionSet( writer: *std.Io.Writer, - core: CoreRegistry, extensions: []const Extension, - all_operand_kinds: OperandKindMap, ) !void { try writer.writeAll( \\pub const InstructionSet = enum { @@ -408,14 +354,17 @@ fn renderInstructionSet( try writer.writeAll( \\ - \\ pub fn instructions(self: InstructionSet) []const Instruction { - \\ return switch (self) { + \\ pub fn operands(inst_set: InstructionSet, opcode: Word) ?[]const Operand { + \\ return switch (inst_set) { + \\ .core => if (std.enums.fromInt(Opcode, opcode)) |op| op.operands() else null, \\ ); - try renderInstructionsCase(writer, "core", core.instructions, all_operand_kinds); for (extensions) |ext| { - try renderInstructionsCase(writer, ext.name, ext.spec.instructions, all_operand_kinds); + try writer.print( + " .{f} => if (std.enums.fromInt({f}, opcode)) |op| op.operands() else null,\n", + .{ std.zig.fmtId(ext.name), std.zig.fmtId(ext.opcode_name) }, + ); } try writer.writeAll( @@ -426,54 +375,6 @@ fn renderInstructionSet( ); } -fn renderInstructionsCase( - writer: *std.Io.Writer, - set_name: []const u8, - instructions: []const Instruction, - all_operand_kinds: OperandKindMap, -) !void { - // Note: theoretically we could dedup from tags and give every instruction a list of aliases, - // but there aren't so many total aliases and that would add more overhead in total. We will - // just filter those out when needed. - - try writer.print(".{f} => &.{{\n", .{std.zig.fmtId(set_name)}); - - for (instructions) |inst| { - try writer.print( - \\.{{ - \\ .name = "{s}", - \\ .opcode = {}, - \\ .operands = &.{{ - \\ - , .{ inst.opname, inst.opcode }); - - for (inst.operands) |operand| { - const quantifier = if (operand.quantifier) |q| - switch (q) { - .@"?" => "optional", - .@"*" => "variadic", - } - else - "required"; - - const kind = all_operand_kinds.get(.{ set_name, operand.kind }) orelse - all_operand_kinds.get(.{ "core", operand.kind }).?; - try writer.print(".{{.kind = .{f}, .quantifier = .{s}}},\n", .{ formatId(kind.kind), quantifier }); - } - - try writer.writeAll( - \\ }, - \\}, - \\ - ); - } - - try writer.writeAll( - \\}, - \\ - ); -} - fn renderClass(arena: Allocator, writer: *std.Io.Writer, instructions: []const Instruction) !void { var class_map: std.array_hash_map.String(void) = .empty; @@ -513,7 +414,6 @@ const Formatter = struct { } } - // make sure that this won't clobber with zig keywords try writer.print("{f}", .{std.zig.fmtId(fw.buffered())}); } }; @@ -533,8 +433,8 @@ fn renderOperandKind(writer: *std.Io.Writer, operands: []const OperandKind) !voi } try writer.writeAll( \\ - \\pub fn category(self: OperandKind) OperandCategory { - \\ return switch (self) { + \\pub fn category(operand_kind: OperandKind) OperandCategory { + \\ return switch (operand_kind) { \\ .opcode => .literal, \\ ); @@ -551,8 +451,8 @@ fn renderOperandKind(writer: *std.Io.Writer, operands: []const OperandKind) !voi try writer.writeAll( \\ }; \\} - \\pub fn enumerants(self: OperandKind) []const Enumerant { - \\ return switch (self) { + \\pub fn enumerants(operand_kind: OperandKind) []const Enumerant { + \\ return switch (operand_kind) { \\ .opcode => unreachable, \\ ); @@ -575,7 +475,24 @@ fn renderOperandKind(writer: *std.Io.Writer, operands: []const OperandKind) !voi } try writer.writeAll("},\n"); } - try writer.writeAll("};\n}\n};\n"); + try writer.writeAll( + \\}; + \\} + \\ + \\pub fn bases(operand_kind: OperandKind) []const OperandKind { + \\ return switch (operand_kind) { + \\ + ); + for (operands) |operand| { + if (operand.category != .Composite) continue; + try writer.print(".{f} => &.{{", .{formatId(operand.kind)}); + for (operand.bases.?, 0..) |base, i| { + if (i != 0) try writer.writeAll(", "); + try writer.print(".{f}", .{formatId(base)}); + } + try writer.writeAll("},\n"); + } + try writer.writeAll("else => unreachable,\n};\n}\n};\n"); } fn renderEnumerant(writer: *std.Io.Writer, enumerant: Enumerant) !void { @@ -588,8 +505,7 @@ fn renderEnumerant(writer: *std.Io.Writer, enumerant: Enumerant) !void { for (enumerant.parameters, 0..) |param, i| { if (i != 0) try writer.writeAll(", "); - // Note, param.quantifier will always be one. - try writer.print(".{f}", .{formatId(param.kind)}); + try writer.print(".{{ .kind = .{f} }}", .{formatId(param.kind)}); } try writer.writeAll("}}"); } @@ -597,16 +513,18 @@ fn renderEnumerant(writer: *std.Io.Writer, enumerant: Enumerant) !void { fn renderOpcodes( arena: Allocator, writer: *std.Io.Writer, + set_name: []const u8, opcode_type_name: []const u8, want_operands: bool, instructions: []const Instruction, extended_structs: ExtendedStructSet, + all_operand_kinds: OperandKindMap, ) !void { var inst_map: std.array_hash_map.Auto(u32, usize) = .empty; try inst_map.ensureTotalCapacity(arena, instructions.len); - var aliases = std.array_list.Managed(struct { inst: usize, alias: usize }).init(arena); - try aliases.ensureTotalCapacity(instructions.len); + var aliases: std.ArrayList(struct { inst: usize, alias: usize }) = .empty; + try aliases.ensureTotalCapacity(arena, instructions.len); for (instructions, 0..) |inst, i| { if (inst.class) |class| { @@ -651,13 +569,45 @@ fn renderOpcodes( }); } + try writer.print( + \\ + \\pub fn operands(opcode: {f}) []const Operand {{ + \\ return switch (opcode) {{ + \\ + , .{std.zig.fmtId(opcode_type_name)}); + + for (instructions_indices) |i| { + const inst = instructions[i]; + try writer.print(".{f} => &.{{", .{std.zig.fmtId(inst.opname)}); + for (inst.operands, 0..) |operand, j| { + const kind = all_operand_kinds.get(.{ set_name, operand.kind }) orelse + all_operand_kinds.get(.{ "core", operand.kind }).?; + if (j != 0) try writer.writeAll(", "); + try writer.print(".{{ .kind = .{f}", .{formatId(kind.kind)}); + if (operand.quantifier) |quantifier| { + try writer.print(", .quantifier = .{s}", .{switch (quantifier) { + .@"?" => "optional", + .@"*" => "variadic", + }}); + } + try writer.writeAll(" }"); + } + try writer.writeAll("},\n"); + } + + try writer.writeAll( + \\ }; + \\} + \\ + ); + if (want_operands) { - try writer.print( + try writer.writeAll( \\ - \\pub fn Operands(comptime self: {f}) type {{ - \\ return switch (self) {{ + \\pub fn Operands(comptime opcode: Opcode) type { + \\ return switch (opcode) { \\ - , .{std.zig.fmtId(opcode_type_name)}); + ); for (instructions_indices) |i| { const inst = instructions[i]; @@ -670,19 +620,104 @@ fn renderOpcodes( \\ ); - try writer.print( - \\pub fn class(self: {f}) Class {{ - \\ return switch (self) {{ + try writer.writeAll( \\ - , .{std.zig.fmtId(opcode_type_name)}); + \\pub fn class(opcode: Opcode) Class { + \\ return switch (@backingInt(opcode)) { + \\ + ); - for (instructions_indices) |i| { - const inst = instructions[i]; - try writer.print(".{f} => .{f},\n", .{ std.zig.fmtId(inst.opname), formatId(inst.class.?) }); + var first: usize = 0; + while (first < instructions_indices.len) { + const class = instructions[instructions_indices[first]].class.?; + var last = first; + while (last + 1 < instructions_indices.len and + std.mem.eql(u8, instructions[instructions_indices[last + 1]].class.?, class)) last += 1; + const lo = instructions[instructions_indices[first]].opcode; + const hi = instructions[instructions_indices[last]].opcode; + if (lo == hi) { + try writer.print("{d} => .{f},\n", .{ lo, formatId(class) }); + } else { + try writer.print("{d}...{d} => .{f},\n", .{ lo, hi, formatId(class) }); + } + first = last + 1; } try writer.writeAll( - \\ }; + \\ else => unreachable, + \\ }; + \\} + \\ + \\pub fn resultIndex(opcode: Opcode) ?u8 { + \\ const list = opcode.operands(); + \\ if (list.len == 0) return null; + \\ return switch (list[0].kind) { + \\ .id_result => 1, + \\ .id_result_type => 2, + \\ else => null, + \\ }; + \\} + \\ + \\pub fn instructionSize(comptime opcode: Opcode, ops: opcode.Operands()) usize { + \\ return operandsSize(opcode.Operands(), ops) + 1; + \\} + \\ + \\fn operandsSize(comptime T: type, ops: T) usize { + \\ const info = switch (@typeInfo(T)) { + \\ .@"struct" => |info| info, + \\ .void => return 0, + \\ else => unreachable, + \\ }; + \\ + \\ var total: usize = 0; + \\ inline for (info.field_names, info.field_types) |field_name, field_type| { + \\ total += operandSize(field_type, @field(ops, field_name)); + \\ } + \\ + \\ return total; + \\} + \\ + \\fn operandSize(comptime T: type, operand: T) usize { + \\ return switch (T) { + \\ LiteralSpecConstantOpInteger => unreachable, + \\ Id, LiteralInteger, LiteralExtInstInteger => 1, + \\ LiteralString => @divCeil(operand.len + 1, @sizeOf(Word)), + \\ LiteralContextDependentNumber => switch (operand) { + \\ .int32, .uint32, .float32 => 1, + \\ .int64, .uint64, .float64 => 2, + \\ }, + \\ PairLiteralIntegerIdRef, PairIdRefLiteralInteger, PairIdRefIdRef => 2, + \\ else => switch (@typeInfo(T)) { + \\ .@"enum" => 1, + \\ .optional => |info| if (operand) |child| operandSize(info.child, child) else 0, + \\ .pointer => |info| blk: { + \\ std.debug.assert(info.size == .slice); + \\ var total: usize = 0; + \\ for (operand) |item| { + \\ total += operandSize(info.child, item); + \\ } + \\ break :blk total; + \\ }, + \\ .@"struct" => |struct_info| { + \\ if (struct_info.layout == .@"packed") return 1; + \\ var total: usize = 0; + \\ inline for (struct_info.field_names, struct_info.field_types) |field_name, field_type| { + \\ switch (@typeInfo(field_type)) { + \\ .optional => |info| if (@field(operand, field_name)) |child| { + \\ total += operandsSize(info.child, child); + \\ }, + \\ .bool, .int => {}, + \\ else => unreachable, + \\ } + \\ } + \\ return total + 1; + \\ }, + \\ .@"union" => switch (operand) { + \\ inline else => |op, tag| operandsSize(@FieldType(T, @tagName(tag)), op) + 1, + \\ }, + \\ else => unreachable, + \\ }, + \\ }; \\} \\ ); @@ -720,13 +755,12 @@ fn renderValueEnum( var enum_map: std.array_hash_map.Auto(u32, usize) = .empty; try enum_map.ensureTotalCapacity(arena, enumerants.len); - var aliases = std.array_list.Managed(struct { enumerant: usize, alias: usize }).init(arena); - try aliases.ensureTotalCapacity(enumerants.len); + var aliases: std.ArrayList(struct { enumerant: usize, alias: usize }) = .empty; + try aliases.ensureTotalCapacity(arena, enumerants.len); for (enumerants, 0..) |enumerant, i| { const value: u31 = switch (enumerant.value) { .int => |value| value, - // Some extensions declare ints as string .bitflag => |value| try std.fmt.parseInt(u31, value, 10), }; const result = enum_map.getOrPutAssumeCapacity(value); @@ -751,15 +785,10 @@ fn renderValueEnum( const enum_indices = enum_map.values(); - const is_capability = std.mem.eql(u8, "Capability", enumeration.kind); - try writer.print("pub const {f} = enum(u32) {{\n", .{std.zig.fmtId(enumeration.kind)}); for (enum_indices) |i| { const enumerant = enumerants[i]; - if (is_capability and !isAllowedCapability(enumerant.enumerant)) continue; - // if (enumerant.value != .int) return error.InvalidRegistry; - switch (enumerant.value) { .int => |value| try writer.print("{f} = {},\n", .{ formatId(enumerant.enumerant), value }), .bitflag => |value| try writer.print("{f} = {s},\n", .{ formatId(enumerant.enumerant), value }), @@ -769,8 +798,6 @@ fn renderValueEnum( try writer.writeByte('\n'); for (aliases.items) |alias| { - if (is_capability and (!isAllowedCapability(enumerants[alias.enumerant].enumerant) or - !isAllowedCapability(enumerants[alias.alias].enumerant))) continue; try writer.print("pub const {f} = {f}.{f};\n", .{ formatId(enumerants[alias.enumerant].enumerant), std.zig.fmtId(enumeration.kind), @@ -778,32 +805,23 @@ fn renderValueEnum( }); } - if (is_capability) { + if (std.mem.eql(u8, "Capability", enumeration.kind)) { try writer.writeAll( \\ \\pub fn dependencies(self: Capability) []const Extension { \\ return switch (self) { ); - for (enum_indices) |i| { const enumerant = enumerants[i]; - if (!isAllowedCapability(enumerant.enumerant)) continue; - - // Convert version to enum. - // None is for reserved - // Example: "None" -> .v1_0 - // Example: "1.5" -> .v1_5 const enum_version = enumerant.version.?; - const version: [4]u8 = .{ 'v', '1', '_', if (enum_version[0] == 'N') '0' else enum_version[2] }; - - try writer.print("\n.{f} => &.{{.{s},", .{ formatId(enumerant.enumerant), version }); + const minor = if (enum_version[0] == 'N') '0' else enum_version[2]; + try writer.print("\n.{f} => &.{{.v1_{c}", .{ formatId(enumerant.enumerant), minor }); for (enumerant.extensions) |extension| { if (!isAllowedExtension(extension)) continue; - try writer.print(".{s},", .{extension}); + try writer.print(", .{s}", .{extension}); } try writer.writeAll("},"); } - try writer.writeAll( \\}; \\} @@ -834,22 +852,20 @@ fn renderBitEnum( enumeration: OperandKind, extended_structs: ExtendedStructSet, ) !void { - try writer.print("pub const {f} = packed struct {{\n", .{std.zig.fmtId(enumeration.kind)}); + try writer.print("pub const {f} = packed struct(Word) {{\n", .{std.zig.fmtId(enumeration.kind)}); var flags_by_bitpos: [32]?usize = @splat(null); const enumerants = enumeration.enumerants orelse return error.InvalidRegistry; - var aliases = std.array_list.Managed(struct { flag: usize, alias: u5 }).init(arena); - try aliases.ensureTotalCapacity(enumerants.len); + var aliases: std.ArrayList(struct { flag: usize, alias: u5 }) = .empty; + try aliases.ensureTotalCapacity(arena, enumerants.len); for (enumerants, 0..) |enumerant, i| { if (enumerant.value != .bitflag) return error.InvalidRegistry; const value = try parseHexInt(enumerant.value.bitflag); if (value == 0) { - continue; // Skip 'none' items + continue; } else if (std.mem.eql(u8, enumerant.enumerant, "FlagIsPublic")) { - // This flag is special and poorly defined in the json files. - // Just skip it for now continue; } @@ -872,14 +888,14 @@ fn renderBitEnum( } } - for (flags_by_bitpos, 0..) |maybe_flag_index, bitpos| { - if (maybe_flag_index) |flag_index| { - try writer.print("{f}", .{formatId(enumerants[flag_index].enumerant)}); - } else { - try writer.print("_reserved_bit_{}", .{bitpos}); - } - - try writer.writeAll(": bool = false,\n"); + var bitpos: usize = 0; + while (bitpos < flags_by_bitpos.len) { + const flag_index = flags_by_bitpos[bitpos] orelse { + bitpos = try renderReservedBits(writer, flags_by_bitpos, bitpos); + continue; + }; + try writer.print("{f}: bool = false,\n", .{formatId(enumerants[flag_index].enumerant)}); + bitpos += 1; } try writer.writeByte('\n'); @@ -899,19 +915,31 @@ fn renderBitEnum( try writer.print("\npub const Extended = struct {{\n", .{}); - for (flags_by_bitpos, 0..) |maybe_flag_index, bitpos| { - const flag_index = maybe_flag_index orelse { - try writer.print("_reserved_bit_{}: bool = false,\n", .{bitpos}); + bitpos = 0; + while (bitpos < flags_by_bitpos.len) { + const flag_index = flags_by_bitpos[bitpos] orelse { + bitpos = try renderReservedBits(writer, flags_by_bitpos, bitpos); continue; }; const enumerant = enumerants[flag_index]; - try renderOperand(writer, .mask, enumerant.enumerant, enumerant.parameters, extended_structs, true); + bitpos += 1; } try writer.writeAll("};\n};\n"); } +fn renderReservedBits(writer: *std.Io.Writer, flags_by_bitpos: [32]?usize, start: usize) !usize { + var end = start + 1; + while (end < flags_by_bitpos.len and flags_by_bitpos[end] == null) end += 1; + if (end == start + 1) { + try writer.print("_reserved_bit_{}: bool = false,\n", .{start}); + } else { + try writer.print("_reserved_bits_{}_to_{}: u{} = 0,\n", .{ start, end - 1, end - start }); + } + return end; +} + fn renderOperand( writer: *std.Io.Writer, kind: enum { @@ -1001,8 +1029,6 @@ fn renderFieldName(writer: *std.Io.Writer, operands: []const Operand, field_inde const operand = operands[field_index]; derive_from_kind: { - // Operand names are often in the json encoded as "'Name'" (with two sets of quotes). - // Additionally, some operands have ~ in them at the end (D~ref~). const name = std.mem.trim(u8, operand.name, "'~"); if (name.len == 0) break :derive_from_kind; @@ -1019,8 +1045,6 @@ fn renderFieldName(writer: *std.Io.Writer, operands: []const Operand, field_inde try writer.print("{f}", .{formatId(operand.kind)}); - // For fields derived from type name, there could be any amount. - // Simply check against all other fields, and if another similar one exists, add a number. const need_extra_index = for (operands, 0..) |other_operand, i| { if (i != field_index and std.mem.eql(u8, operand.kind, other_operand.kind)) { break true; @@ -1032,6 +1056,62 @@ fn renderFieldName(writer: *std.Io.Writer, operands: []const Operand, field_inde } } +fn isAllowedCapability(name: []const u8) bool { + const last = name[name.len - 1]; + if (std.ascii.isLower(last) or std.ascii.isDigit(last)) return true; + for (allowed_vendors) |vendor| { + if (std.mem.endsWith(u8, name, vendor)) return true; + } + return false; +} + +fn isAllowedExtension(name: []const u8) bool { + const spv_prefix = "SPV_"; + if (!std.mem.startsWith(u8, name, spv_prefix)) return false; + const tail = name[spv_prefix.len..]; + for (allowed_vendors) |vendor| { + if (std.mem.startsWith(u8, tail, vendor) and + tail.len > vendor.len and tail[vendor.len] == '_') + return true; + } + return false; +} + +fn isEnabled(version: ?[]const u8, capabilities: []const []const u8, extensions: []const []const u8) bool { + if (version) |v| if (!std.mem.eql(u8, v, "None")) return true; + if (extensions.len != 0) { + for (extensions) |ext| if (isAllowedExtension(ext)) return true; + return false; + } + if (capabilities.len == 0) return true; + for (capabilities) |cap| if (isAllowedCapability(cap)) return true; + return false; +} + +fn keepEnabled(instructions: *[]Instruction, kinds: []OperandKind) void { + var kept: usize = 0; + for (instructions.*) |inst| { + if (!isEnabled(inst.version, inst.capabilities, inst.extensions)) continue; + instructions.*[kept] = inst; + kept += 1; + } + instructions.* = instructions.*[0..kept]; + for (kinds) |*kind| { + const enumerants = kind.enumerants orelse continue; + var kept_enumerants: usize = 0; + for (enumerants) |enumerant| { + const enabled = if (std.mem.eql(u8, kind.kind, "Capability")) + isAllowedCapability(enumerant.enumerant) + else + isEnabled(enumerant.version, enumerant.capabilities, enumerant.extensions); + if (!enabled) continue; + enumerants[kept_enumerants] = enumerant; + kept_enumerants += 1; + } + kind.enumerants = enumerants[0..kept_enumerants]; + } +} + fn parseHexInt(text: []const u8) !u31 { const prefix = "0x"; if (!std.mem.startsWith(u8, text, prefix)) @@ -1043,11 +1123,11 @@ fn usageAndExit(arg0: []const u8, code: u8) noreturn { const stderr = std.debug.lockStderr(&.{}); const w = &stderr.file_writer.interface; w.print( - \\Usage: {s} + \\Usage: {s} \\ \\Generates Zig bindings for SPIR-V specifications found in the SPIRV-Headers \\repository. The result, printed to stdout, should be used to update - \\files in src/codegen/spirv. Don't forget to format the output. + \\src/codegen/spirv/spec.zig. \\ \\ should point to a clone of \\https://github.com/KhronosGroup/SPIRV-Headers/ -- 2.54.0