From d027fbf938bb84839c564e8ad02f4fdd3d84cb0c Mon Sep 17 00:00:00 2001 From: Brendan Punsky Date: Fri, 26 Jun 2026 07:08:50 -0400 Subject: [PATCH] rexcode/ir/spirv: generate the operand-layout table (codec dispatch data) Extend the tablegen to emit encoding_table.odin from the grammar -- the per-opcode operand layout that drives the codec: INSTRUCTION_SPECS flat []Operand_Spec {Spec_Kind, Quantifier} INSTRUCTION_INDEX [max_opcode+1]Spec_Run -- O(1) opcode -> its operand run ENUM_PARAMS enumerant -> trailing-parameter operands, so the codec PARAM_SPECS reads MemoryAccess.Aligned / OpExecutionMode LocalSize / Decoration.SpecId etc. correctly 873 opcodes, 3693 operand specs. Package compiles. --- core/rexcode/ir/spirv/encoding_table.odin | 4947 +++++++++++++++++++++ core/rexcode/ir/spirv/tablegen/gen.odin | 101 +- 2 files changed, 5045 insertions(+), 3 deletions(-) create mode 100644 core/rexcode/ir/spirv/encoding_table.odin diff --git a/core/rexcode/ir/spirv/encoding_table.odin b/core/rexcode/ir/spirv/encoding_table.odin new file mode 100644 index 000000000..bca788d06 --- /dev/null +++ b/core/rexcode/ir/spirv/encoding_table.odin @@ -0,0 +1,4947 @@ +// rexcode · Brendan Punsky (dotbmp@github), original author + +package rexcode_spirv + +// GENERATED from spirv.core.grammar.json (SPIRV-Headers unified1) by tablegen/gen.odin. +// DO NOT EDIT -- regenerate with `odin run core/rexcode/ir/spirv/tablegen`. + +// The operand-layout table that drives the codec. INSTRUCTION_INDEX[opcode] +// gives the run of INSTRUCTION_SPECS describing that opcode's operands; an enum +// operand whose value/bit appears in ENUM_PARAMS is followed by its PARAM_SPECS +// run as trailing operands. + +Quantifier :: enum u8 { ONE, OPTIONAL, VARIADIC } + +Operand_Spec :: struct { + kind: Spec_Kind, + quant: Quantifier, +} + +Spec_Run :: struct { + start: u16, + count: u8, +} + +Enum_Param :: struct { + kind: Spec_Kind, // which enum kind + value: u32, // enumerant value (ValueEnum) or bit mask (BitEnum) + params: Spec_Run, // run in PARAM_SPECS +} + +@(rodata) INSTRUCTION_SPECS := [3693]Operand_Spec{ + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralString, .ONE}, + {.SourceLanguage, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .OPTIONAL}, + {.LiteralString, .OPTIONAL}, + {.LiteralString, .ONE}, + {.IdRef, .ONE}, + {.LiteralString, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralString, .ONE}, + {.IdResult, .ONE}, + {.LiteralString, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralString, .ONE}, + {.IdResult, .ONE}, + {.LiteralString, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralExtInstInteger, .ONE}, + {.IdRef, .VARIADIC}, + {.AddressingModel, .ONE}, + {.MemoryModel, .ONE}, + {.ExecutionModel, .ONE}, + {.IdRef, .ONE}, + {.LiteralString, .ONE}, + {.IdRef, .VARIADIC}, + {.IdRef, .ONE}, + {.ExecutionMode, .ONE}, + {.Capability, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResult, .ONE}, + {.LiteralInteger, .ONE}, + {.FPEncoding, .OPTIONAL}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.Dim, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.ImageFormat, .ONE}, + {.AccessQualifier, .OPTIONAL}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResult, .ONE}, + {.LiteralString, .ONE}, + {.IdResult, .ONE}, + {.StorageClass, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.AccessQualifier, .ONE}, + {.IdRef, .ONE}, + {.StorageClass, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralContextDependentNumber, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.SamplerAddressingMode, .ONE}, + {.LiteralInteger, .ONE}, + {.SamplerFilterMode, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralContextDependentNumber, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralSpecConstantOpInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.FunctionControl, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.StorageClass, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.MemoryAccess, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdRef, .ONE}, + {.Decoration, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.Decoration, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdRef, .ONE}, + {.PairIdRefLiteralInteger, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.StorageClass, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.PairIdRefIdRef, .VARIADIC}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LoopControl, .ONE}, + {.IdRef, .ONE}, + {.SelectionControl, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .VARIADIC}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.PairLiteralIntegerIdRef, .VARIADIC}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.LiteralString, .ONE}, + {.IdRef, .ONE}, + {.ExecutionMode, .ONE}, + {.IdRef, .ONE}, + {.Decoration, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.TensorOperands, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.TensorOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralString, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResult, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResult, .ONE}, + {.StorageClass, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.StorageClass, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .OPTIONAL}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralExtInstInteger, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.PackedVectorFormat, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.PackedVectorFormat, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.PackedVectorFormat, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.PackedVectorFormat, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.PackedVectorFormat, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.PackedVectorFormat, .OPTIONAL}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.MemoryAccess, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.CooperativeMatrixOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.LiteralString, .ONE}, + {.IdResult, .ONE}, + {.LiteralString, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.StorageClass, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.Decoration, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralInteger, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralInteger, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.ImageOperands, .OPTIONAL}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.CooperativeMatrixOperands, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.CooperativeMatrixOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .OPTIONAL}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdRef, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.CooperativeMatrixReduce, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .ONE}, + {.TensorAddressingOperands, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .ONE}, + {.TensorAddressingOperands, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.RawAccessChainOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResult, .ONE}, + {.LiteralString, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LiteralString, .ONE}, + {.LiteralString, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.Decoration, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.Decoration, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .VARIADIC}, + {.IdResult, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .OPTIONAL}, + {.IdResult, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.AccessQualifier, .ONE}, + {.IdRef, .VARIADIC}, + {.IdRef, .VARIADIC}, + {.IdRef, .VARIADIC}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdScope, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdScope, .ONE}, + {.IdScope, .ONE}, + {.IdMemorySemantics, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MatrixMultiplyAccumulateOperands, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LiteralString, .ONE}, + {.IdRef, .ONE}, + {.ExecutionModel, .ONE}, + {.IdRef, .ONE}, + {.LiteralString, .ONE}, + {.IdRef, .VARIADIC}, + {.IdRef, .ONE}, + {.Capability, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.LiteralInteger, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.Capability, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .VARIADIC}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.MemoryAccess, .OPTIONAL}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdScope, .ONE}, + {.GroupOperation, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.LiteralInteger, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdResultType, .ONE}, + {.IdResult, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, + {.IdRef, .ONE}, +} + +@(rodata) INSTRUCTION_INDEX := [6919]Spec_Run{ + 0 = {0, 0}, + 1 = {0, 2}, + 2 = {2, 1}, + 3 = {3, 4}, + 4 = {7, 1}, + 5 = {8, 2}, + 6 = {10, 3}, + 7 = {13, 2}, + 8 = {15, 3}, + 10 = {18, 1}, + 11 = {19, 2}, + 12 = {21, 5}, + 14 = {26, 2}, + 15 = {28, 4}, + 16 = {32, 2}, + 17 = {34, 1}, + 19 = {35, 1}, + 20 = {36, 1}, + 21 = {37, 3}, + 22 = {40, 3}, + 23 = {43, 3}, + 24 = {46, 3}, + 25 = {49, 9}, + 26 = {58, 1}, + 27 = {59, 2}, + 28 = {61, 3}, + 29 = {64, 2}, + 30 = {66, 2}, + 31 = {68, 2}, + 32 = {70, 3}, + 33 = {73, 3}, + 34 = {76, 1}, + 35 = {77, 1}, + 36 = {78, 1}, + 37 = {79, 1}, + 38 = {80, 2}, + 39 = {82, 2}, + 41 = {84, 2}, + 42 = {86, 2}, + 43 = {88, 3}, + 44 = {91, 3}, + 45 = {94, 5}, + 46 = {99, 2}, + 48 = {101, 2}, + 49 = {103, 2}, + 50 = {105, 3}, + 51 = {108, 3}, + 52 = {111, 3}, + 54 = {114, 4}, + 55 = {118, 2}, + 56 = {120, 0}, + 57 = {120, 4}, + 59 = {124, 4}, + 60 = {128, 5}, + 61 = {133, 4}, + 62 = {137, 3}, + 63 = {140, 4}, + 64 = {144, 5}, + 65 = {149, 4}, + 66 = {153, 4}, + 67 = {157, 5}, + 68 = {162, 4}, + 69 = {166, 3}, + 70 = {169, 5}, + 71 = {174, 2}, + 72 = {176, 3}, + 73 = {179, 1}, + 74 = {180, 2}, + 75 = {182, 2}, + 77 = {184, 4}, + 78 = {188, 5}, + 79 = {193, 5}, + 80 = {198, 3}, + 81 = {201, 4}, + 82 = {205, 5}, + 83 = {210, 3}, + 84 = {213, 3}, + 86 = {216, 4}, + 87 = {220, 5}, + 88 = {225, 5}, + 89 = {230, 6}, + 90 = {236, 6}, + 91 = {242, 5}, + 92 = {247, 5}, + 93 = {252, 6}, + 94 = {258, 6}, + 95 = {264, 5}, + 96 = {269, 6}, + 97 = {275, 6}, + 98 = {281, 5}, + 99 = {286, 4}, + 100 = {290, 3}, + 101 = {293, 3}, + 102 = {296, 3}, + 103 = {299, 4}, + 104 = {303, 3}, + 105 = {306, 4}, + 106 = {310, 3}, + 107 = {313, 3}, + 109 = {316, 3}, + 110 = {319, 3}, + 111 = {322, 3}, + 112 = {325, 3}, + 113 = {328, 3}, + 114 = {331, 3}, + 115 = {334, 3}, + 116 = {337, 3}, + 117 = {340, 3}, + 118 = {343, 3}, + 119 = {346, 3}, + 120 = {349, 3}, + 121 = {352, 3}, + 122 = {355, 3}, + 123 = {358, 4}, + 124 = {362, 3}, + 126 = {365, 3}, + 127 = {368, 3}, + 128 = {371, 4}, + 129 = {375, 4}, + 130 = {379, 4}, + 131 = {383, 4}, + 132 = {387, 4}, + 133 = {391, 4}, + 134 = {395, 4}, + 135 = {399, 4}, + 136 = {403, 4}, + 137 = {407, 4}, + 138 = {411, 4}, + 139 = {415, 4}, + 140 = {419, 4}, + 141 = {423, 4}, + 142 = {427, 4}, + 143 = {431, 4}, + 144 = {435, 4}, + 145 = {439, 4}, + 146 = {443, 4}, + 147 = {447, 4}, + 148 = {451, 4}, + 149 = {455, 4}, + 150 = {459, 4}, + 151 = {463, 4}, + 152 = {467, 4}, + 154 = {471, 3}, + 155 = {474, 3}, + 156 = {477, 3}, + 157 = {480, 3}, + 158 = {483, 3}, + 159 = {486, 3}, + 160 = {489, 3}, + 161 = {492, 4}, + 162 = {496, 4}, + 163 = {500, 4}, + 164 = {504, 4}, + 165 = {508, 4}, + 166 = {512, 4}, + 167 = {516, 4}, + 168 = {520, 3}, + 169 = {523, 5}, + 170 = {528, 4}, + 171 = {532, 4}, + 172 = {536, 4}, + 173 = {540, 4}, + 174 = {544, 4}, + 175 = {548, 4}, + 176 = {552, 4}, + 177 = {556, 4}, + 178 = {560, 4}, + 179 = {564, 4}, + 180 = {568, 4}, + 181 = {572, 4}, + 182 = {576, 4}, + 183 = {580, 4}, + 184 = {584, 4}, + 185 = {588, 4}, + 186 = {592, 4}, + 187 = {596, 4}, + 188 = {600, 4}, + 189 = {604, 4}, + 190 = {608, 4}, + 191 = {612, 4}, + 194 = {616, 4}, + 195 = {620, 4}, + 196 = {624, 4}, + 197 = {628, 4}, + 198 = {632, 4}, + 199 = {636, 4}, + 200 = {640, 3}, + 201 = {643, 6}, + 202 = {649, 5}, + 203 = {654, 5}, + 204 = {659, 3}, + 205 = {662, 3}, + 207 = {665, 3}, + 208 = {668, 3}, + 209 = {671, 3}, + 210 = {674, 3}, + 211 = {677, 3}, + 212 = {680, 3}, + 213 = {683, 3}, + 214 = {686, 3}, + 215 = {689, 3}, + 218 = {692, 0}, + 219 = {692, 0}, + 220 = {692, 1}, + 221 = {693, 1}, + 224 = {694, 3}, + 225 = {697, 2}, + 227 = {699, 5}, + 228 = {704, 4}, + 229 = {708, 6}, + 230 = {714, 8}, + 231 = {722, 8}, + 232 = {730, 5}, + 233 = {735, 5}, + 234 = {740, 6}, + 235 = {746, 6}, + 236 = {752, 6}, + 237 = {758, 6}, + 238 = {764, 6}, + 239 = {770, 6}, + 240 = {776, 6}, + 241 = {782, 6}, + 242 = {788, 6}, + 245 = {794, 3}, + 246 = {797, 3}, + 247 = {800, 2}, + 248 = {802, 1}, + 249 = {803, 1}, + 250 = {804, 4}, + 251 = {808, 3}, + 252 = {811, 0}, + 253 = {811, 0}, + 254 = {811, 1}, + 255 = {812, 0}, + 256 = {812, 2}, + 257 = {814, 2}, + 259 = {816, 8}, + 260 = {824, 3}, + 261 = {827, 4}, + 262 = {831, 4}, + 263 = {835, 5}, + 264 = {840, 5}, + 265 = {845, 5}, + 266 = {850, 5}, + 267 = {855, 5}, + 268 = {860, 5}, + 269 = {865, 5}, + 270 = {870, 5}, + 271 = {875, 5}, + 274 = {880, 6}, + 275 = {886, 6}, + 276 = {892, 8}, + 277 = {900, 8}, + 278 = {908, 6}, + 279 = {914, 6}, + 280 = {920, 4}, + 281 = {924, 4}, + 282 = {928, 3}, + 283 = {931, 5}, + 284 = {936, 5}, + 285 = {941, 7}, + 286 = {948, 7}, + 287 = {955, 5}, + 288 = {960, 5}, + 291 = {965, 6}, + 292 = {971, 13}, + 293 = {984, 7}, + 294 = {991, 7}, + 295 = {998, 6}, + 296 = {1004, 6}, + 297 = {1010, 1}, + 298 = {1011, 1}, + 299 = {1012, 2}, + 300 = {1014, 3}, + 301 = {1017, 2}, + 302 = {1019, 3}, + 303 = {1022, 2}, + 304 = {1024, 5}, + 305 = {1029, 5}, + 306 = {1034, 5}, + 307 = {1039, 6}, + 308 = {1045, 6}, + 309 = {1051, 5}, + 310 = {1056, 5}, + 311 = {1061, 6}, + 312 = {1067, 6}, + 313 = {1073, 5}, + 314 = {1078, 6}, + 315 = {1084, 6}, + 316 = {1090, 3}, + 317 = {1093, 0}, + 318 = {1093, 5}, + 319 = {1098, 3}, + 320 = {1101, 5}, + 321 = {1106, 3}, + 322 = {1109, 1}, + 323 = {1110, 5}, + 324 = {1115, 3}, + 325 = {1118, 7}, + 326 = {1125, 6}, + 327 = {1131, 1}, + 328 = {1132, 3}, + 329 = {1135, 3}, + 330 = {1138, 1}, + 331 = {1139, 2}, + 332 = {1141, 2}, + 333 = {1143, 3}, + 334 = {1146, 4}, + 335 = {1150, 4}, + 336 = {1154, 4}, + 337 = {1158, 5}, + 338 = {1163, 4}, + 339 = {1167, 4}, + 340 = {1171, 4}, + 341 = {1175, 5}, + 342 = {1180, 5}, + 343 = {1185, 4}, + 344 = {1189, 4}, + 345 = {1193, 5}, + 346 = {1198, 5}, + 347 = {1203, 5}, + 348 = {1208, 5}, + 349 = {1213, 6}, + 350 = {1219, 6}, + 351 = {1225, 6}, + 352 = {1231, 6}, + 353 = {1237, 6}, + 354 = {1243, 6}, + 355 = {1249, 6}, + 356 = {1255, 6}, + 357 = {1261, 6}, + 358 = {1267, 6}, + 359 = {1273, 6}, + 360 = {1279, 6}, + 361 = {1285, 6}, + 362 = {1291, 6}, + 363 = {1297, 6}, + 364 = {1303, 6}, + 365 = {1309, 5}, + 366 = {1314, 5}, + 400 = {1319, 3}, + 401 = {1322, 4}, + 402 = {1326, 4}, + 403 = {1330, 4}, + 4160 = {1334, 4}, + 4161 = {1338, 3}, + 4162 = {1341, 3}, + 4163 = {1344, 4}, + 4164 = {1348, 5}, + 4165 = {1353, 4}, + 4166 = {1357, 4}, + 4181 = {1361, 3}, + 4182 = {1364, 3}, + 4183 = {1367, 2}, + 4184 = {1369, 4}, + 4185 = {1373, 3}, + 4186 = {1376, 0}, + 4190 = {1376, 3}, + 4416 = {1379, 0}, + 4417 = {1379, 2}, + 4418 = {1381, 5}, + 4419 = {1386, 5}, + 4420 = {1391, 5}, + 4421 = {1396, 3}, + 4422 = {1399, 3}, + 4423 = {1402, 6}, + 4424 = {1408, 6}, + 4425 = {1414, 5}, + 4426 = {1419, 5}, + 4427 = {1424, 5}, + 4428 = {1429, 3}, + 4429 = {1432, 3}, + 4430 = {1435, 3}, + 4431 = {1438, 6}, + 4432 = {1444, 4}, + 4433 = {1448, 5}, + 4434 = {1453, 11}, + 4445 = {1464, 11}, + 4446 = {1475, 2}, + 4447 = {1477, 3}, + 4448 = {1480, 0}, + 4449 = {1480, 0}, + 4450 = {1480, 5}, + 4451 = {1485, 5}, + 4452 = {1490, 5}, + 4453 = {1495, 6}, + 4454 = {1501, 6}, + 4455 = {1507, 6}, + 4456 = {1513, 6}, + 4457 = {1519, 6}, + 4458 = {1525, 5}, + 4459 = {1530, 6}, + 4460 = {1536, 3}, + 4461 = {1539, 3}, + 4462 = {1542, 3}, + 4463 = {1545, 3}, + 4472 = {1548, 1}, + 4473 = {1549, 8}, + 4474 = {1557, 1}, + 4475 = {1558, 2}, + 4476 = {1560, 1}, + 4477 = {1561, 3}, + 4479 = {1564, 4}, + 4480 = {1568, 5}, + 4481 = {1573, 5}, + 4482 = {1578, 7}, + 4483 = {1585, 7}, + 4497 = {1592, 3}, + 4500 = {1595, 7}, + 4501 = {1602, 7}, + 4502 = {1609, 7}, + 4503 = {1616, 7}, + 4540 = {1623, 3}, + 4541 = {1626, 3}, + 4542 = {1629, 4}, + 5000 = {1633, 5}, + 5001 = {1638, 5}, + 5002 = {1643, 5}, + 5003 = {1648, 5}, + 5004 = {1653, 5}, + 5005 = {1658, 5}, + 5006 = {1663, 5}, + 5007 = {1668, 5}, + 5011 = {1673, 4}, + 5012 = {1677, 5}, + 5056 = {1682, 3}, + 5074 = {1685, 5}, + 5075 = {1690, 1}, + 5076 = {1691, 2}, + 5078 = {1693, 3}, + 5090 = {1696, 3}, + 5101 = {1699, 4}, + 5103 = {1703, 2}, + 5104 = {1705, 2}, + 5110 = {1707, 3}, + 5111 = {1710, 3}, + 5115 = {1713, 2}, + 5119 = {1715, 3}, + 5121 = {1718, 2}, + 5126 = {1720, 6}, + 5127 = {1726, 3}, + 5129 = {1729, 3}, + 5147 = {1732, 3}, + 5148 = {1735, 3}, + 5158 = {1738, 2}, + 5159 = {1740, 3}, + 5249 = {1743, 14}, + 5250 = {1757, 13}, + 5251 = {1770, 7}, + 5252 = {1777, 3}, + 5253 = {1780, 3}, + 5254 = {1783, 3}, + 5255 = {1786, 3}, + 5256 = {1789, 13}, + 5257 = {1802, 3}, + 5258 = {1805, 3}, + 5259 = {1808, 1}, + 5260 = {1809, 12}, + 5261 = {1821, 13}, + 5262 = {1834, 12}, + 5263 = {1846, 6}, + 5264 = {1852, 2}, + 5265 = {1854, 3}, + 5266 = {1857, 2}, + 5267 = {1859, 3}, + 5268 = {1862, 3}, + 5269 = {1865, 3}, + 5270 = {1868, 3}, + 5271 = {1871, 3}, + 5272 = {1874, 3}, + 5273 = {1877, 3}, + 5274 = {1880, 3}, + 5275 = {1883, 3}, + 5276 = {1886, 3}, + 5277 = {1889, 3}, + 5278 = {1892, 3}, + 5279 = {1895, 3}, + 5280 = {1898, 2}, + 5281 = {1900, 1}, + 5283 = {1901, 7}, + 5288 = {1908, 3}, + 5289 = {1911, 13}, + 5290 = {1924, 7}, + 5291 = {1931, 3}, + 5292 = {1934, 16}, + 5293 = {1950, 3}, + 5294 = {1953, 4}, + 5295 = {1957, 2}, + 5296 = {1959, 3}, + 5299 = {1962, 2}, + 5300 = {1964, 7}, + 5301 = {1971, 7}, + 5302 = {1978, 5}, + 5303 = {1983, 4}, + 5304 = {1987, 5}, + 5305 = {1992, 7}, + 5306 = {1999, 8}, + 5307 = {2007, 3}, + 5308 = {2010, 3}, + 5309 = {2013, 2}, + 5310 = {2015, 4}, + 5311 = {2019, 14}, + 5312 = {2033, 15}, + 5313 = {2048, 1}, + 5314 = {2049, 2}, + 5315 = {2051, 3}, + 5316 = {2054, 12}, + 5317 = {2066, 13}, + 5318 = {2079, 1}, + 5319 = {2080, 2}, + 5320 = {2082, 3}, + 5321 = {2085, 2}, + 5322 = {2087, 3}, + 5323 = {2090, 3}, + 5324 = {2093, 3}, + 5325 = {2096, 3}, + 5326 = {2099, 3}, + 5327 = {2102, 3}, + 5328 = {2105, 3}, + 5329 = {2108, 3}, + 5330 = {2111, 3}, + 5331 = {2114, 3}, + 5332 = {2117, 3}, + 5333 = {2120, 3}, + 5334 = {2123, 4}, + 5335 = {2127, 0}, + 5336 = {2127, 0}, + 5337 = {2127, 11}, + 5338 = {2138, 12}, + 5339 = {2150, 12}, + 5340 = {2162, 4}, + 5341 = {2166, 1}, + 5344 = {2167, 2}, + 5345 = {2169, 4}, + 5346 = {2173, 3}, + 5347 = {2176, 3}, + 5348 = {2179, 3}, + 5349 = {2182, 3}, + 5350 = {2185, 3}, + 5351 = {2188, 3}, + 5352 = {2191, 3}, + 5358 = {2194, 5}, + 5359 = {2199, 6}, + 5360 = {2205, 5}, + 5361 = {2210, 5}, + 5362 = {2215, 3}, + 5364 = {2218, 0}, + 5365 = {2218, 0}, + 5366 = {2218, 5}, + 5367 = {2223, 7}, + 5368 = {2230, 5}, + 5369 = {2235, 5}, + 5370 = {2240, 3}, + 5371 = {2243, 4}, + 5372 = {2247, 2}, + 5373 = {2249, 4}, + 5374 = {2253, 4}, + 5375 = {2257, 4}, + 5376 = {2261, 4}, + 5377 = {2265, 2}, + 5378 = {2267, 4}, + 5379 = {2271, 4}, + 5380 = {2275, 0}, + 5381 = {2275, 2}, + 5382 = {2277, 7}, + 5384 = {2284, 4}, + 5390 = {2288, 3}, + 5391 = {2291, 3}, + 5392 = {2294, 3}, + 5393 = {2297, 3}, + 5394 = {2300, 3}, + 5395 = {2303, 3}, + 5396 = {2306, 3}, + 5397 = {2309, 1}, + 5398 = {2310, 7}, + 5427 = {2317, 4}, + 5428 = {2321, 4}, + 5429 = {2325, 4}, + 5430 = {2329, 4}, + 5431 = {2333, 4}, + 5432 = {2337, 3}, + 5433 = {2340, 3}, + 5434 = {2343, 3}, + 5435 = {2346, 3}, + 5436 = {2349, 3}, + 5437 = {2352, 3}, + 5438 = {2355, 4}, + 5439 = {2359, 4}, + 5571 = {2363, 4}, + 5572 = {2367, 5}, + 5573 = {2372, 5}, + 5574 = {2377, 4}, + 5575 = {2381, 3}, + 5576 = {2384, 2}, + 5577 = {2386, 4}, + 5578 = {2390, 3}, + 5580 = {2393, 6}, + 5581 = {2399, 5}, + 5585 = {2404, 3}, + 5586 = {2407, 3}, + 5587 = {2410, 4}, + 5588 = {2414, 4}, + 5589 = {2418, 4}, + 5590 = {2422, 4}, + 5591 = {2426, 4}, + 5592 = {2430, 4}, + 5593 = {2434, 4}, + 5594 = {2438, 4}, + 5595 = {2442, 4}, + 5596 = {2446, 4}, + 5597 = {2450, 4}, + 5598 = {2454, 4}, + 5600 = {2458, 3}, + 5601 = {2461, 3}, + 5609 = {2464, 2}, + 5610 = {2466, 6}, + 5611 = {2472, 4}, + 5614 = {2476, 6}, + 5615 = {2482, 6}, + 5630 = {2488, 1}, + 5631 = {2489, 4}, + 5632 = {2493, 2}, + 5633 = {2495, 3}, + 5699 = {2498, 4}, + 5700 = {2502, 2}, + 5701 = {2504, 1}, + 5702 = {2505, 1}, + 5703 = {2506, 1}, + 5704 = {2507, 1}, + 5705 = {2508, 1}, + 5706 = {2509, 1}, + 5707 = {2510, 1}, + 5708 = {2511, 1}, + 5709 = {2512, 1}, + 5710 = {2513, 1}, + 5711 = {2514, 1}, + 5712 = {2515, 1}, + 5713 = {2516, 4}, + 5714 = {2520, 4}, + 5715 = {2524, 4}, + 5716 = {2528, 4}, + 5717 = {2532, 4}, + 5718 = {2536, 4}, + 5719 = {2540, 4}, + 5720 = {2544, 4}, + 5721 = {2548, 2}, + 5722 = {2550, 2}, + 5723 = {2552, 2}, + 5724 = {2554, 6}, + 5725 = {2560, 4}, + 5726 = {2564, 2}, + 5727 = {2566, 2}, + 5728 = {2568, 3}, + 5729 = {2571, 4}, + 5730 = {2575, 4}, + 5731 = {2579, 5}, + 5732 = {2584, 3}, + 5733 = {2587, 3}, + 5734 = {2590, 3}, + 5735 = {2593, 3}, + 5736 = {2596, 3}, + 5737 = {2599, 3}, + 5738 = {2602, 3}, + 5739 = {2605, 3}, + 5740 = {2608, 3}, + 5741 = {2611, 3}, + 5742 = {2614, 3}, + 5743 = {2617, 3}, + 5744 = {2620, 3}, + 5745 = {2623, 3}, + 5746 = {2626, 5}, + 5747 = {2631, 5}, + 5748 = {2636, 5}, + 5749 = {2641, 6}, + 5750 = {2647, 4}, + 5751 = {2651, 6}, + 5752 = {2657, 3}, + 5753 = {2660, 4}, + 5754 = {2664, 3}, + 5755 = {2667, 4}, + 5756 = {2671, 4}, + 5757 = {2675, 5}, + 5758 = {2680, 6}, + 5759 = {2686, 6}, + 5760 = {2692, 7}, + 5761 = {2699, 5}, + 5762 = {2704, 6}, + 5763 = {2710, 6}, + 5764 = {2716, 7}, + 5765 = {2723, 3}, + 5766 = {2726, 3}, + 5767 = {2729, 3}, + 5768 = {2732, 3}, + 5769 = {2735, 3}, + 5770 = {2738, 4}, + 5771 = {2742, 4}, + 5772 = {2746, 4}, + 5773 = {2750, 5}, + 5774 = {2755, 5}, + 5775 = {2760, 5}, + 5776 = {2765, 4}, + 5777 = {2769, 3}, + 5778 = {2772, 3}, + 5779 = {2775, 3}, + 5780 = {2778, 3}, + 5781 = {2781, 9}, + 5782 = {2790, 10}, + 5783 = {2800, 3}, + 5784 = {2803, 3}, + 5785 = {2806, 3}, + 5786 = {2809, 5}, + 5787 = {2814, 6}, + 5788 = {2820, 5}, + 5789 = {2825, 6}, + 5790 = {2831, 3}, + 5791 = {2834, 3}, + 5792 = {2837, 8}, + 5793 = {2845, 10}, + 5794 = {2855, 13}, + 5795 = {2868, 4}, + 5796 = {2872, 3}, + 5797 = {2875, 4}, + 5798 = {2879, 6}, + 5799 = {2885, 4}, + 5800 = {2889, 3}, + 5801 = {2892, 4}, + 5802 = {2896, 4}, + 5803 = {2900, 4}, + 5804 = {2904, 5}, + 5805 = {2909, 6}, + 5806 = {2915, 5}, + 5807 = {2920, 6}, + 5808 = {2926, 3}, + 5809 = {2929, 3}, + 5810 = {2932, 3}, + 5811 = {2935, 3}, + 5812 = {2938, 3}, + 5813 = {2941, 3}, + 5814 = {2944, 3}, + 5815 = {2947, 3}, + 5816 = {2950, 3}, + 5818 = {2953, 3}, + 5819 = {2956, 2}, + 5820 = {2958, 1}, + 5840 = {2959, 8}, + 5841 = {2967, 8}, + 5842 = {2975, 8}, + 5843 = {2983, 8}, + 5846 = {2991, 10}, + 5847 = {3001, 10}, + 5848 = {3011, 10}, + 5849 = {3021, 10}, + 5850 = {3031, 6}, + 5851 = {3037, 6}, + 5852 = {3043, 6}, + 5853 = {3049, 6}, + 5854 = {3055, 6}, + 5855 = {3061, 8}, + 5856 = {3069, 8}, + 5857 = {3077, 8}, + 5858 = {3085, 10}, + 5859 = {3095, 8}, + 5860 = {3103, 8}, + 5861 = {3111, 8}, + 5862 = {3119, 8}, + 5863 = {3127, 8}, + 5864 = {3135, 8}, + 5865 = {3143, 8}, + 5866 = {3151, 8}, + 5867 = {3159, 8}, + 5868 = {3167, 8}, + 5869 = {3175, 8}, + 5870 = {3183, 8}, + 5871 = {3191, 8}, + 5872 = {3199, 8}, + 5873 = {3207, 8}, + 5874 = {3215, 8}, + 5875 = {3223, 8}, + 5876 = {3231, 8}, + 5877 = {3239, 8}, + 5878 = {3247, 8}, + 5879 = {3255, 10}, + 5880 = {3265, 10}, + 5881 = {3275, 10}, + 5882 = {3285, 10}, + 5887 = {3295, 1}, + 5911 = {3296, 2}, + 5912 = {3298, 3}, + 5913 = {3301, 2}, + 5923 = {3303, 8}, + 5924 = {3311, 8}, + 5925 = {3319, 8}, + 5926 = {3327, 8}, + 5927 = {3335, 8}, + 5928 = {3343, 8}, + 5929 = {3351, 8}, + 5930 = {3359, 8}, + 5931 = {3367, 8}, + 5932 = {3375, 8}, + 5933 = {3383, 8}, + 5934 = {3391, 3}, + 5938 = {3394, 3}, + 5946 = {3397, 4}, + 5947 = {3401, 4}, + 5949 = {3405, 3}, + 6016 = {3408, 3}, + 6017 = {3411, 3}, + 6018 = {3414, 4}, + 6019 = {3418, 4}, + 6020 = {3422, 4}, + 6021 = {3426, 4}, + 6022 = {3430, 4}, + 6023 = {3434, 4}, + 6024 = {3438, 4}, + 6025 = {3442, 4}, + 6026 = {3446, 3}, + 6027 = {3449, 4}, + 6028 = {3453, 4}, + 6029 = {3457, 3}, + 6030 = {3460, 3}, + 6031 = {3463, 4}, + 6032 = {3467, 4}, + 6035 = {3471, 6}, + 6086 = {3477, 2}, + 6090 = {3479, 1}, + 6091 = {3480, 1}, + 6092 = {3481, 1}, + 6096 = {3482, 1}, + 6116 = {3483, 3}, + 6117 = {3486, 3}, + 6142 = {3489, 3}, + 6143 = {3492, 3}, + 6145 = {3495, 3}, + 6163 = {3498, 7}, + 6164 = {3505, 2}, + 6165 = {3507, 3}, + 6166 = {3510, 1}, + 6199 = {3511, 1}, + 6221 = {3512, 3}, + 6231 = {3515, 10}, + 6232 = {3525, 10}, + 6233 = {3535, 10}, + 6234 = {3545, 9}, + 6235 = {3554, 10}, + 6237 = {3564, 7}, + 6242 = {3571, 6}, + 6244 = {3577, 4}, + 6248 = {3581, 2}, + 6249 = {3583, 5}, + 6250 = {3588, 2}, + 6251 = {3590, 4}, + 6252 = {3594, 6}, + 6253 = {3600, 3}, + 6254 = {3603, 3}, + 6258 = {3606, 6}, + 6259 = {3612, 4}, + 6401 = {3616, 5}, + 6402 = {3621, 5}, + 6403 = {3626, 5}, + 6404 = {3631, 5}, + 6405 = {3636, 5}, + 6406 = {3641, 5}, + 6407 = {3646, 5}, + 6408 = {3651, 5}, + 6426 = {3656, 3}, + 6428 = {3659, 6}, + 6429 = {3665, 4}, + 6529 = {3669, 3}, + 6530 = {3672, 3}, + 6531 = {3675, 3}, + 6916 = {3678, 5}, + 6917 = {3683, 5}, + 6918 = {3688, 5}, +} + +@(rodata) ENUM_PARAMS := [155]Enum_Param{ + {.ImageOperands, 1, {0, 1}}, + {.ImageOperands, 2, {1, 1}}, + {.ImageOperands, 4, {2, 2}}, + {.ImageOperands, 8, {4, 1}}, + {.ImageOperands, 16, {5, 1}}, + {.ImageOperands, 32, {6, 1}}, + {.ImageOperands, 64, {7, 1}}, + {.ImageOperands, 128, {8, 1}}, + {.ImageOperands, 256, {9, 1}}, + {.ImageOperands, 512, {10, 1}}, + {.ImageOperands, 65536, {11, 1}}, + {.LoopControl, 8, {12, 1}}, + {.LoopControl, 16, {13, 1}}, + {.LoopControl, 32, {14, 1}}, + {.LoopControl, 64, {15, 1}}, + {.LoopControl, 128, {16, 1}}, + {.LoopControl, 256, {17, 1}}, + {.LoopControl, 65536, {18, 1}}, + {.LoopControl, 131072, {19, 1}}, + {.LoopControl, 262144, {20, 1}}, + {.LoopControl, 524288, {21, 1}}, + {.LoopControl, 1048576, {22, 1}}, + {.LoopControl, 2097152, {23, 1}}, + {.LoopControl, 4194304, {24, 1}}, + {.LoopControl, 16777216, {25, 1}}, + {.LoopControl, 33554432, {26, 1}}, + {.MemoryAccess, 2, {27, 1}}, + {.MemoryAccess, 8, {28, 1}}, + {.MemoryAccess, 16, {29, 1}}, + {.MemoryAccess, 65536, {30, 1}}, + {.MemoryAccess, 131072, {31, 1}}, + {.ExecutionMode, 0, {32, 1}}, + {.ExecutionMode, 17, {33, 3}}, + {.ExecutionMode, 18, {36, 3}}, + {.ExecutionMode, 26, {39, 1}}, + {.ExecutionMode, 30, {40, 1}}, + {.ExecutionMode, 35, {41, 1}}, + {.ExecutionMode, 36, {42, 1}}, + {.ExecutionMode, 37, {43, 1}}, + {.ExecutionMode, 38, {44, 3}}, + {.ExecutionMode, 39, {47, 3}}, + {.ExecutionMode, 4459, {50, 1}}, + {.ExecutionMode, 4460, {51, 1}}, + {.ExecutionMode, 4461, {52, 1}}, + {.ExecutionMode, 4462, {53, 1}}, + {.ExecutionMode, 4463, {54, 1}}, + {.ExecutionMode, 4490, {55, 3}}, + {.ExecutionMode, 5070, {58, 1}}, + {.ExecutionMode, 5071, {59, 1}}, + {.ExecutionMode, 5072, {60, 3}}, + {.ExecutionMode, 5073, {63, 1}}, + {.ExecutionMode, 5077, {64, 3}}, + {.ExecutionMode, 5102, {67, 2}}, + {.ExecutionMode, 5270, {69, 1}}, + {.ExecutionMode, 5618, {70, 1}}, + {.ExecutionMode, 5620, {71, 1}}, + {.ExecutionMode, 5621, {72, 1}}, + {.ExecutionMode, 5622, {73, 1}}, + {.ExecutionMode, 5623, {74, 1}}, + {.ExecutionMode, 5893, {75, 3}}, + {.ExecutionMode, 5894, {78, 1}}, + {.ExecutionMode, 5896, {79, 1}}, + {.ExecutionMode, 5903, {80, 1}}, + {.ExecutionMode, 6028, {81, 2}}, + {.ExecutionMode, 6031, {83, 1}}, + {.ExecutionMode, 6154, {84, 1}}, + {.ExecutionMode, 6160, {85, 1}}, + {.ExecutionMode, 6417, {86, 1}}, + {.ExecutionMode, 6461, {87, 1}}, + {.ExecutionMode, 6462, {88, 1}}, + {.ExecutionMode, 6463, {89, 1}}, + {.Decoration, 1, {90, 1}}, + {.Decoration, 6, {91, 1}}, + {.Decoration, 7, {92, 1}}, + {.Decoration, 11, {93, 1}}, + {.Decoration, 27, {94, 1}}, + {.Decoration, 29, {95, 1}}, + {.Decoration, 30, {96, 1}}, + {.Decoration, 31, {97, 1}}, + {.Decoration, 32, {98, 1}}, + {.Decoration, 33, {99, 1}}, + {.Decoration, 34, {100, 1}}, + {.Decoration, 35, {101, 1}}, + {.Decoration, 36, {102, 1}}, + {.Decoration, 37, {103, 1}}, + {.Decoration, 38, {104, 1}}, + {.Decoration, 39, {105, 1}}, + {.Decoration, 40, {106, 1}}, + {.Decoration, 41, {107, 2}}, + {.Decoration, 43, {109, 1}}, + {.Decoration, 44, {110, 1}}, + {.Decoration, 45, {111, 1}}, + {.Decoration, 46, {112, 1}}, + {.Decoration, 47, {113, 1}}, + {.Decoration, 5019, {114, 1}}, + {.Decoration, 5020, {115, 1}}, + {.Decoration, 5091, {116, 1}}, + {.Decoration, 5098, {117, 1}}, + {.Decoration, 5100, {118, 1}}, + {.Decoration, 5124, {119, 1}}, + {.Decoration, 5125, {120, 1}}, + {.Decoration, 5256, {121, 1}}, + {.Decoration, 5358, {122, 1}}, + {.Decoration, 5397, {123, 1}}, + {.Decoration, 5599, {124, 1}}, + {.Decoration, 5607, {125, 1}}, + {.Decoration, 5625, {126, 1}}, + {.Decoration, 5628, {127, 1}}, + {.Decoration, 5634, {128, 1}}, + {.Decoration, 5635, {129, 1}}, + {.Decoration, 5636, {130, 1}}, + {.Decoration, 5822, {131, 2}}, + {.Decoration, 5823, {133, 2}}, + {.Decoration, 5826, {135, 1}}, + {.Decoration, 5827, {136, 1}}, + {.Decoration, 5828, {137, 1}}, + {.Decoration, 5829, {138, 1}}, + {.Decoration, 5832, {139, 1}}, + {.Decoration, 5834, {140, 2}}, + {.Decoration, 5835, {142, 1}}, + {.Decoration, 5836, {143, 1}}, + {.Decoration, 5883, {144, 1}}, + {.Decoration, 5884, {145, 1}}, + {.Decoration, 5900, {146, 1}}, + {.Decoration, 5902, {147, 1}}, + {.Decoration, 5909, {148, 2}}, + {.Decoration, 5914, {150, 1}}, + {.Decoration, 5915, {151, 1}}, + {.Decoration, 5917, {152, 1}}, + {.Decoration, 5918, {153, 1}}, + {.Decoration, 5919, {154, 1}}, + {.Decoration, 5921, {155, 1}}, + {.Decoration, 5944, {156, 1}}, + {.Decoration, 6080, {157, 2}}, + {.Decoration, 6170, {159, 1}}, + {.Decoration, 6172, {160, 1}}, + {.Decoration, 6173, {161, 3}}, + {.Decoration, 6177, {164, 1}}, + {.Decoration, 6178, {165, 1}}, + {.Decoration, 6179, {166, 1}}, + {.Decoration, 6180, {167, 1}}, + {.Decoration, 6181, {168, 1}}, + {.Decoration, 6182, {169, 1}}, + {.Decoration, 6188, {170, 2}}, + {.Decoration, 6190, {172, 1}}, + {.Decoration, 6191, {173, 1}}, + {.Decoration, 6247, {174, 1}}, + {.Decoration, 6442, {175, 2}}, + {.Decoration, 6443, {177, 2}}, + {.TensorAddressingOperands, 1, {179, 1}}, + {.TensorAddressingOperands, 2, {180, 1}}, + {.TensorAddressingOperands, 4, {181, 1}}, + {.TensorOperands, 2, {182, 1}}, + {.TensorOperands, 4, {183, 1}}, + {.TensorOperands, 8, {184, 1}}, +} + +@(rodata) PARAM_SPECS := [185]Spec_Kind{ + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdScope, + .IdScope, + .IdRef, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .IdScope, + .IdScope, + .IdRef, + .IdRef, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .IdRef, + .IdRef, + .IdRef, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .IdRef, + .NamedMaximumNumberOfRegisters, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .BuiltIn, + .IdScope, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .FunctionParameterAttribute, + .FPRoundingMode, + .FPFastMathMode, + .LiteralString, + .LinkageType, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralString, + .LiteralInteger, + .LiteralInteger, + .IdRef, + .LiteralString, + .LiteralString, + .LiteralInteger, + .FPRoundingMode, + .LiteralInteger, + .FPDenormMode, + .LiteralString, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralString, + .LiteralString, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .IdRef, + .IdRef, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .FPOperationMode, + .LiteralFloat, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .LiteralInteger, + .AccessQualifier, + .LiteralInteger, + .LiteralInteger, + .HostAccessQualifier, + .LiteralString, + .InitializationModeQualifier, + .LiteralInteger, + .IdRef, + .LiteralInteger, + .LoadCacheControl, + .LiteralInteger, + .StoreCacheControl, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, + .IdRef, +} diff --git a/core/rexcode/ir/spirv/tablegen/gen.odin b/core/rexcode/ir/spirv/tablegen/gen.odin index 622350a5f..375c2303d 100644 --- a/core/rexcode/ir/spirv/tablegen/gen.odin +++ b/core/rexcode/ir/spirv/tablegen/gen.odin @@ -17,6 +17,7 @@ import "core:strconv" GRAMMAR_PATH :: #directory + "/spirv.core.grammar.json" OPCODES_OUT :: #directory + "/../opcodes.odin" KINDS_OUT :: #directory + "/../operand_kinds.odin" +TABLE_OUT :: #directory + "/../encoding_table.odin" HDR :: `// rexcode · Brendan Punsky (dotbmp@github), original author @@ -43,9 +44,12 @@ main :: proc() { defer json.destroy_value(root) g := root.(json.Object) - n_op := gen_opcodes(g["instructions"].(json.Array)) - n_k := gen_operand_kinds(g["operand_kinds"].(json.Array)) - fmt.printfln("spirv tablegen: %d opcodes, %d operand kinds", n_op, n_k) + insts := g["instructions"].(json.Array) + kinds := g["operand_kinds"].(json.Array) + n_op := gen_opcodes(insts) + n_k := gen_operand_kinds(kinds) + n_sp := gen_encoding_table(insts, kinds) + fmt.printfln("spirv tablegen: %d opcodes, %d operand kinds, %d operand specs", n_op, n_k, n_sp) } write_file :: proc(path: string, sb: ^strings.Builder) { @@ -166,6 +170,97 @@ gen_bit_enum :: proc(sb: ^strings.Builder, name: string, k: json.Object) { strings.write_string(sb, "}\n") } +// --- encoding_table.odin : the operand-layout table that drives the codec. +// INSTRUCTION_INDEX[opcode] -> a run of INSTRUCTION_SPECS (the opcode's +// operands). When an enum operand's value/bit is in ENUM_PARAMS, its +// PARAM_SPECS run follows as trailing operands. --- +gen_encoding_table :: proc(insts: json.Array, kinds: json.Array) -> int { + Spec :: struct { kind, quant: string } + specs: [dynamic]Spec; defer delete(specs) + Run :: struct { op, start, count: int } + runs: [dynamic]Run; defer delete(runs) + seen: map[i64]bool; defer delete(seen) + maxop := 0 + for v in insts { + inst := v.(json.Object) + op := int(inst["opcode"].(json.Integer)) + if i64(op) in seen { continue } + seen[i64(op)] = true + if op > maxop { maxop = op } + start := len(specs) + if ops, ok := inst["operands"]; ok { + for ov in ops.(json.Array) { + o := ov.(json.Object) + q := "ONE" + if qv, qok := o["quantifier"]; qok { + qs := string(qv.(json.String)) + q = qs == "?" ? "OPTIONAL" : (qs == "*" ? "VARIADIC" : "ONE") + } + append(&specs, Spec{string(o["kind"].(json.String)), q}) + } + } + append(&runs, Run{op, start, len(specs) - start}) + } + + // enumerant -> trailing parameter operands (MemoryAccess.Aligned, ...). + Par :: struct { kind: string, value: i64, params: [dynamic]string } + pars: [dynamic]Par; defer delete(pars) + for kv in kinds { + k := kv.(json.Object) + cat := string(k["category"].(json.String)) + if cat != "ValueEnum" && cat != "BitEnum" { continue } + kname := string(k["kind"].(json.String)) + if ens, ok := k["enumerants"]; ok { + vseen: map[i64]bool; defer delete(vseen) + for ev in ens.(json.Array) { + e := ev.(json.Object) + ps, pok := e["parameters"] + if !pok { continue } + val := parse_value(e["value"]) + if val in vseen { continue } + vseen[val] = true + pp: [dynamic]string + for pv in ps.(json.Array) { + append(&pp, string(pv.(json.Object)["kind"].(json.String))) + } + append(&pars, Par{kname, val, pp}) + } + } + } + + sb := strings.builder_make(); defer strings.builder_destroy(&sb) + strings.write_string(&sb, HDR) + strings.write_string(&sb, "\n// The operand-layout table that drives the codec. INSTRUCTION_INDEX[opcode]\n// gives the run of INSTRUCTION_SPECS describing that opcode's operands; an enum\n// operand whose value/bit appears in ENUM_PARAMS is followed by its PARAM_SPECS\n// run as trailing operands.\n\n") + strings.write_string(&sb, "Quantifier :: enum u8 { ONE, OPTIONAL, VARIADIC }\n\n") + strings.write_string(&sb, "Operand_Spec :: struct {\n\tkind: Spec_Kind,\n\tquant: Quantifier,\n}\n\n") + strings.write_string(&sb, "Spec_Run :: struct {\n\tstart: u16,\n\tcount: u8,\n}\n\n") + strings.write_string(&sb, "Enum_Param :: struct {\n\tkind: Spec_Kind, // which enum kind\n\tvalue: u32, // enumerant value (ValueEnum) or bit mask (BitEnum)\n\tparams: Spec_Run, // run in PARAM_SPECS\n}\n") + + fmt.sbprintf(&sb, "\n@(rodata) INSTRUCTION_SPECS := [%d]Operand_Spec{{\n", len(specs)) + for s in specs { fmt.sbprintf(&sb, "\t{{.%s, .%s}},\n", s.kind, s.quant) } + strings.write_string(&sb, "}\n") + + fmt.sbprintf(&sb, "\n@(rodata) INSTRUCTION_INDEX := [%d]Spec_Run{{\n", maxop + 1) + for r in runs { fmt.sbprintf(&sb, "\t%d = {{%d, %d}},\n", r.op, r.start, r.count) } + strings.write_string(&sb, "}\n") + + pspecs: [dynamic]string; defer delete(pspecs) + fmt.sbprintf(&sb, "\n@(rodata) ENUM_PARAMS := [%d]Enum_Param{{\n", len(pars)) + for p in pars { + pstart := len(pspecs) + for pk in p.params { append(&pspecs, pk) } + fmt.sbprintf(&sb, "\t{{.%s, %d, {{%d, %d}}}},\n", p.kind, p.value, pstart, len(p.params)) + } + strings.write_string(&sb, "}\n") + + fmt.sbprintf(&sb, "\n@(rodata) PARAM_SPECS := [%d]Spec_Kind{{\n", len(pspecs)) + for ps in pspecs { fmt.sbprintf(&sb, "\t.%s,\n", ps) } + strings.write_string(&sb, "}\n") + + write_file(TABLE_OUT, &sb) + return len(specs) +} + // ----------------------------------------------------------------------------- // helpers // -----------------------------------------------------------------------------