aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs')
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs5383
1 files changed, 5383 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs b/src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs
new file mode 100644
index 00000000..0c22ddc0
--- /dev/null
+++ b/src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs
@@ -0,0 +1,5383 @@
+namespace Ryujinx.Graphics.Shader.Decoders
+{
+ enum AlSize
+ {
+ _32 = 0,
+ _64 = 1,
+ _96 = 2,
+ _128 = 3,
+ }
+
+ enum AtomSize
+ {
+ U32 = 0,
+ S32 = 1,
+ U64 = 2,
+ F32FtzRn = 3,
+ F16x2FtzRn = 4,
+ S64 = 5,
+ }
+
+ enum AtomOp
+ {
+ Add = 0,
+ Min = 1,
+ Max = 2,
+ Inc = 3,
+ Dec = 4,
+ And = 5,
+ Or = 6,
+ Xor = 7,
+ Exch = 8,
+ Safeadd = 10,
+ }
+
+ enum AtomsSize
+ {
+ U32 = 0,
+ S32 = 1,
+ U64 = 2,
+ S64 = 3,
+ }
+
+ enum BarMode
+ {
+ Bar = 0,
+ Result = 1,
+ Warp = 2,
+ }
+
+ enum BarOp
+ {
+ Sync = 0,
+ Arv = 1,
+ Red = 2,
+ Scan = 3,
+ SyncAll = 4,
+ }
+
+ enum BarRedOp
+ {
+ Popc = 0,
+ And = 1,
+ Or = 2,
+ }
+
+ enum Bpt
+ {
+ DrainIllegal = 0,
+ Cal = 1,
+ Pause = 2,
+ Trap = 3,
+ Int = 4,
+ Drain = 5,
+ }
+
+ enum Ccc
+ {
+ F = 0,
+ Lt = 1,
+ Eq = 2,
+ Le = 3,
+ Gt = 4,
+ Ne = 5,
+ Ge = 6,
+ Num = 7,
+ Nan = 8,
+ Ltu = 9,
+ Equ = 10,
+ Leu = 11,
+ Gtu = 12,
+ Neu = 13,
+ Geu = 14,
+ T = 15,
+ Off = 16,
+ Lo = 17,
+ Sff = 18,
+ Ls = 19,
+ Hi = 20,
+ Sft = 21,
+ Hs = 22,
+ Oft = 23,
+ CsmTa = 24,
+ CsmTr = 25,
+ CsmMx = 26,
+ FcsmTa = 27,
+ FcsmTr = 28,
+ FcsmMx = 29,
+ Rle = 30,
+ Rgt = 31,
+ }
+
+ enum CacheType
+ {
+ U = 1,
+ C = 2,
+ I = 3,
+ Crs = 4,
+ }
+
+ enum CctlOp
+ {
+ Pf1 = 1,
+ Pf1_5 = 2,
+ Pf2 = 3,
+ Wb = 4,
+ Iv = 5,
+ Ivall = 6,
+ Rs = 7,
+ Rslb = 9,
+ }
+
+ enum CctltOp
+ {
+ Ivth = 1,
+ }
+
+ enum BoolOp
+ {
+ And = 0,
+ Or = 1,
+ Xor = 2,
+ }
+
+ enum SReg
+ {
+ LaneId = 0,
+ Clock = 1,
+ VirtCfg = 2,
+ VirtId = 3,
+ Pm0 = 4,
+ Pm1 = 5,
+ Pm2 = 6,
+ Pm3 = 7,
+ Pm4 = 8,
+ Pm5 = 9,
+ Pm6 = 10,
+ Pm7 = 11,
+ OrderingTicket = 15,
+ PrimType = 16,
+ InvocationId = 17,
+ YDirection = 18,
+ ThreadKill = 19,
+ ShaderType = 20,
+ DirectCbeWriteAddressLow = 21,
+ DirectCbeWriteAddressHigh = 22,
+ DirectCbeWriteEnabled = 23,
+ MachineId0 = 24,
+ MachineId1 = 25,
+ MachineId2 = 26,
+ MachineId3 = 27,
+ Affinity = 28,
+ InvocationInfo = 29,
+ WScaleFactorXY = 30,
+ WScaleFactorZ = 31,
+ TId = 32,
+ TIdX = 33,
+ TIdY = 34,
+ TIdZ = 35,
+ CtaParam = 36,
+ CtaIdX = 37,
+ CtaIdY = 38,
+ CtaIdZ = 39,
+ Ntid = 40,
+ CirQueueIncrMinusOne = 41,
+ Nlatc = 42,
+ Swinlo = 48,
+ Swinsz = 49,
+ Smemsz = 50,
+ Smembanks = 51,
+ LWinLo = 52,
+ LWinSz = 53,
+ LMemLoSz = 54,
+ LMemHiOff = 55,
+ EqMask = 56,
+ LtMask = 57,
+ LeMask = 58,
+ GtMask = 59,
+ GeMask = 60,
+ RegAlloc = 61,
+ CtxAddr = 62,
+ GlobalErrorStatus = 64,
+ WarpErrorStatus = 66,
+ WarpErrorStatusClear = 67,
+ PmHi0 = 72,
+ PmHi1 = 73,
+ PmHi2 = 74,
+ PmHi3 = 75,
+ PmHi4 = 76,
+ PmHi5 = 77,
+ PmHi6 = 78,
+ PmHi7 = 79,
+ ClockLo = 80,
+ ClockHi = 81,
+ GlobalTimerLo = 82,
+ GlobalTimerHi = 83,
+ HwTaskId = 96,
+ CircularQueueEntryIndex = 97,
+ CircularQueueEntryAddressLow = 98,
+ CircularQueueEntryAddressHigh = 99,
+ }
+
+ enum RoundMode
+ {
+ Rn = 0,
+ Rm = 1,
+ Rp = 2,
+ Rz = 3,
+ }
+
+ enum FComp
+ {
+ F = 0,
+ Lt = 1,
+ Eq = 2,
+ Le = 3,
+ Gt = 4,
+ Ne = 5,
+ Ge = 6,
+ Num = 7,
+ Nan = 8,
+ Ltu = 9,
+ Equ = 10,
+ Leu = 11,
+ Gtu = 12,
+ Neu = 13,
+ Geu = 14,
+ T = 15,
+ }
+
+ enum IntegerRound
+ {
+ Pass = 1,
+ Round = 4,
+ Floor = 5,
+ Ceil = 6,
+ Trunc = 7,
+ }
+
+ enum IDstFmt
+ {
+ U16 = 1,
+ U32 = 2,
+ U64 = 3,
+ S16 = 5,
+ S32 = 6,
+ S64 = 7,
+ }
+
+ enum ISrcFmt
+ {
+ U8 = 0,
+ U16 = 1,
+ U32 = 2,
+ U64 = 3,
+ S8 = 4,
+ S16 = 5,
+ S32 = 6,
+ S64 = 7,
+ }
+
+ enum ISrcDstFmt
+ {
+ U8 = 0,
+ U16 = 1,
+ U32 = 2,
+ S8 = 4,
+ S16 = 5,
+ S32 = 6,
+ }
+
+ enum RoundMode2
+ {
+ Round = 0,
+ Floor = 1,
+ Ceil = 2,
+ Trunc = 3,
+ }
+
+ enum ChkModeF
+ {
+ Divide = 0,
+ }
+
+ enum Fmz
+ {
+ Ftz = 1,
+ Fmz = 2,
+ }
+
+ enum MultiplyScale
+ {
+ NoScale = 0,
+ D2 = 1,
+ D4 = 2,
+ D8 = 3,
+ M8 = 4,
+ M4 = 5,
+ M2 = 6,
+ }
+
+ enum OFmt
+ {
+ F16 = 0,
+ F32 = 1,
+ MrgH0 = 2,
+ MrgH1 = 3,
+ }
+
+ enum HalfSwizzle
+ {
+ F16 = 0,
+ F32 = 1,
+ H0H0 = 2,
+ H1H1 = 3,
+ }
+
+ enum ByteSel
+ {
+ B0 = 0,
+ B1 = 1,
+ B2 = 2,
+ B3 = 3,
+ }
+
+ enum DstFmt
+ {
+ F16 = 1,
+ F32 = 2,
+ F64 = 3,
+ }
+
+ enum AvgMode
+ {
+ NoNeg = 0,
+ NegB = 1,
+ NegA = 2,
+ PlusOne = 3,
+ }
+
+ enum Lrs
+ {
+ None = 0,
+ RightShift = 1,
+ LeftShift = 2,
+ }
+
+ enum HalfSelect
+ {
+ B32 = 0,
+ H0 = 1,
+ H1 = 2,
+ }
+
+ enum IComp
+ {
+ F = 0,
+ Lt = 1,
+ Eq = 2,
+ Le = 3,
+ Gt = 4,
+ Ne = 5,
+ Ge = 6,
+ T = 7,
+ }
+
+ enum XMode
+ {
+ Xlo = 1,
+ Xmed = 2,
+ Xhi = 3,
+ }
+
+ enum IpaOp
+ {
+ Pass = 0,
+ Multiply = 1,
+ Constant = 2,
+ Sc = 3,
+ }
+
+ enum IBase
+ {
+ Patch = 1,
+ Prim = 2,
+ Attr = 3,
+ }
+
+ enum CacheOpLd
+ {
+ Ca = 0,
+ Cg = 1,
+ Ci = 2,
+ Cv = 3,
+ }
+
+ enum CacheOpSt
+ {
+ Wb = 0,
+ Cg = 1,
+ Ci = 2,
+ Wt = 3,
+ }
+
+ enum LsSize
+ {
+ U8 = 0,
+ S8 = 1,
+ U16 = 2,
+ S16 = 3,
+ B32 = 4,
+ B64 = 5,
+ B128 = 6,
+ UB128 = 7,
+ }
+
+ enum LsSize2
+ {
+ U8 = 0,
+ S8 = 1,
+ U16 = 2,
+ S16 = 3,
+ B32 = 4,
+ B64 = 5,
+ B128 = 6,
+ }
+
+ enum AddressMode
+ {
+ Il = 1,
+ Is = 2,
+ Isl = 3,
+ }
+
+ enum CacheOp2
+ {
+ Lu = 1,
+ Ci = 2,
+ Cv = 3,
+ }
+
+ enum PredicateOp
+ {
+ F = 0,
+ T = 1,
+ Z = 2,
+ Nz = 3,
+ }
+
+ enum LogicOp
+ {
+ And = 0,
+ Or = 1,
+ Xor = 2,
+ PassB = 3,
+ }
+
+ enum Membar
+ {
+ Cta = 0,
+ Gl = 1,
+ Sys = 2,
+ Vc = 3,
+ }
+
+ enum Ivall
+ {
+ Ivalld = 1,
+ Ivallt = 2,
+ Ivalltd = 3,
+ }
+
+ enum MufuOp
+ {
+ Cos = 0,
+ Sin = 1,
+ Ex2 = 2,
+ Lg2 = 3,
+ Rcp = 4,
+ Rsq = 5,
+ Rcp64h = 6,
+ Rsq64h = 7,
+ Sqrt = 8,
+ }
+
+ enum OutType
+ {
+ Emit = 1,
+ Cut = 2,
+ EmitThenCut = 3,
+ }
+
+ enum PixMode
+ {
+ Covmask = 1,
+ Covered = 2,
+ Offset = 3,
+ CentroidOffset = 4,
+ MyIndex = 5,
+ }
+
+ enum PMode
+ {
+ F4e = 1,
+ B4e = 2,
+ Rc8 = 3,
+ Ecl = 4,
+ Ecr = 5,
+ Rc16 = 6,
+ }
+
+ enum RedOp
+ {
+ Add = 0,
+ Min = 1,
+ Max = 2,
+ Inc = 3,
+ Dec = 4,
+ And = 5,
+ Or = 6,
+ Xor = 7,
+ }
+
+ enum XModeShf
+ {
+ Hi = 1,
+ X = 2,
+ Xhi = 3,
+ }
+
+ enum MaxShift
+ {
+ U64 = 2,
+ S64 = 3,
+ }
+
+ enum ShflMode
+ {
+ Idx = 0,
+ Up = 1,
+ Down = 2,
+ Bfly = 3,
+ }
+
+ enum Clamp
+ {
+ Ign = 0,
+ Trap = 2,
+ }
+
+ enum SuatomSize
+ {
+ U32 = 0,
+ S32 = 1,
+ U64 = 2,
+ F32FtzRn = 3,
+ F16x2FtzRn = 4,
+ S64 = 5,
+ Sd32 = 6,
+ Sd64 = 7,
+ }
+
+ enum SuDim
+ {
+ _1d = 0,
+ _1dBuffer = 1,
+ _1dArray = 2,
+ _2d = 3,
+ _2dArray = 4,
+ _3d = 5,
+ }
+
+ enum SuatomOp
+ {
+ Add = 0,
+ Min = 1,
+ Max = 2,
+ Inc = 3,
+ Dec = 4,
+ And = 5,
+ Or = 6,
+ Xor = 7,
+ Exch = 8,
+ }
+
+ enum SuSize
+ {
+ U8 = 0,
+ S8 = 1,
+ U16 = 2,
+ S16 = 3,
+ B32 = 4,
+ B64 = 5,
+ B128 = 6,
+ UB128 = 7,
+ }
+
+ enum SuRgba
+ {
+ R = 1,
+ G = 2,
+ Rg = 3,
+ B = 4,
+ Rb = 5,
+ Gb = 6,
+ Rgb = 7,
+ A = 8,
+ Ra = 9,
+ Ga = 10,
+ Rga = 11,
+ Ba = 12,
+ Rba = 13,
+ Gba = 14,
+ Rgba = 15,
+ }
+
+ enum Lod
+ {
+ Lz = 1,
+ Lb = 2,
+ Ll = 3,
+ Lba = 6,
+ Lla = 7,
+ }
+
+ enum TexDim
+ {
+ _1d = 0,
+ Array1d = 1,
+ _2d = 2,
+ Array2d = 3,
+ _3d = 4,
+ Array3d = 5,
+ Cube = 6,
+ ArrayCube = 7,
+ }
+
+ enum TexsTarget
+ {
+ Texture1DLodZero = 0,
+ Texture2D = 1,
+ Texture2DLodZero = 2,
+ Texture2DLodLevel = 3,
+ Texture2DDepthCompare = 4,
+ Texture2DLodLevelDepthCompare = 5,
+ Texture2DLodZeroDepthCompare = 6,
+ Texture2DArray = 7,
+ Texture2DArrayLodZero = 8,
+ Texture2DArrayLodZeroDepthCompare = 9,
+ Texture3D = 10,
+ Texture3DLodZero = 11,
+ TextureCube = 12,
+ TextureCubeLodLevel = 13,
+ }
+
+ enum TldsTarget
+ {
+ Texture1DLodZero = 0x0,
+ Texture1DLodLevel = 0x1,
+ Texture2DLodZero = 0x2,
+ Texture2DLodZeroOffset = 0x4,
+ Texture2DLodLevel = 0x5,
+ Texture2DLodZeroMultisample = 0x6,
+ Texture3DLodZero = 0x7,
+ Texture2DArrayLodZero = 0x8,
+ Texture2DLodLevelOffset = 0xc
+ }
+
+ enum TexComp
+ {
+ R = 0,
+ G = 1,
+ B = 2,
+ A = 3,
+ }
+
+ enum TexOffset
+ {
+ None = 0,
+ Aoffi = 1,
+ Ptp = 2,
+ }
+
+ enum TexQuery
+ {
+ TexHeaderDimension = 1,
+ TexHeaderTextureType = 2,
+ TexHeaderSamplerPos = 5,
+ TexSamplerFilter = 16,
+ TexSamplerLod = 18,
+ TexSamplerWrap = 20,
+ TexSamplerBorderColor = 22,
+ }
+
+ enum VectorSelect
+ {
+ U8B0 = 0,
+ U8B1 = 1,
+ U8B2 = 2,
+ U8B3 = 3,
+ U16H0 = 4,
+ U16H1 = 5,
+ U32 = 6,
+ S8B0 = 8,
+ S8B1 = 9,
+ S8B2 = 10,
+ S8B3 = 11,
+ S16H0 = 12,
+ S16H1 = 13,
+ S32 = 14,
+ }
+
+ enum VideoOp
+ {
+ Mrg16h = 0,
+ Mrg16l = 1,
+ Mrg8b0 = 2,
+ Mrg8b2 = 3,
+ Acc = 4,
+ Min = 5,
+ Max = 6,
+ }
+
+ enum VideoRed
+ {
+ Acc = 1,
+ }
+
+ enum LaneMask4
+ {
+ Z = 1,
+ W = 2,
+ Zw = 3,
+ X = 4,
+ Xz = 5,
+ Xw = 6,
+ Xzw = 7,
+ Y = 8,
+ Yz = 9,
+ Yw = 10,
+ Yzw = 11,
+ Xy = 12,
+ Xyz = 13,
+ Xyw = 14,
+ Xyzw = 15,
+ }
+
+ enum ASelect4
+ {
+ _0000 = 0,
+ _1111 = 1,
+ _2222 = 2,
+ _3333 = 3,
+ _3210 = 4,
+ _5432 = 6,
+ _6543 = 7,
+ _3201 = 8,
+ _3012 = 9,
+ _0213 = 10,
+ _3120 = 11,
+ _1230 = 12,
+ _2310 = 13,
+ }
+
+ enum BSelect4
+ {
+ _4444 = 0,
+ _5555 = 1,
+ _6666 = 2,
+ _7777 = 3,
+ _7654 = 4,
+ _5432 = 6,
+ _4321 = 7,
+ _4567 = 8,
+ _6745 = 9,
+ _5476 = 10,
+ }
+
+ enum VideoScale
+ {
+ Shr7 = 1,
+ Shr15 = 2,
+ }
+
+ enum VoteMode
+ {
+ All = 0,
+ Any = 1,
+ Eq = 2,
+ }
+
+ enum XmadCop
+ {
+ Cfull = 0,
+ Clo = 1,
+ Chi = 2,
+ Csfu = 3,
+ Cbcc = 4,
+ }
+
+ enum XmadCop2
+ {
+ Cfull = 0,
+ Clo = 1,
+ Chi = 2,
+ Csfu = 3,
+ }
+
+ enum ImadspASelect
+ {
+ U32 = 0,
+ S32 = 1,
+ U24 = 2,
+ S24 = 3,
+ U16h0 = 4,
+ S16h0 = 5,
+ U16h1 = 6,
+ S16h1 = 7,
+ }
+
+ enum ImadspBSelect
+ {
+ U24 = 0,
+ S24 = 1,
+ U16h0 = 2,
+ S16h0 = 3,
+ }
+
+ struct InstConditional
+ {
+ private ulong _opcode;
+ public InstConditional(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ }
+
+ struct InstAl2p
+ {
+ private ulong _opcode;
+ public InstAl2p(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
+ public bool Aio => (_opcode & 0x100000000) != 0;
+ public int Imm11 => (int)((_opcode >> 20) & 0x7FF);
+ public int DestPred => (int)((_opcode >> 44) & 0x7);
+ }
+
+ struct InstAld
+ {
+ private ulong _opcode;
+ public InstAld(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm11 => (int)((_opcode >> 20) & 0x7FF);
+ public bool P => (_opcode & 0x80000000) != 0;
+ public bool O => (_opcode & 0x100000000) != 0;
+ public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
+ public bool Phys => !P && Imm11 == 0 && SrcA != RegisterConsts.RegisterZeroIndex;
+ }
+
+ struct InstAst
+ {
+ private ulong _opcode;
+ public InstAst(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 0) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm11 => (int)((_opcode >> 20) & 0x7FF);
+ public bool P => (_opcode & 0x80000000) != 0;
+ public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
+ public bool Phys => !P && Imm11 == 0 && SrcA != RegisterConsts.RegisterZeroIndex;
+ }
+
+ struct InstAtom
+ {
+ private ulong _opcode;
+ public InstAtom(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm20 => (int)((_opcode >> 28) & 0xFFFFF);
+ public AtomSize Size => (AtomSize)((_opcode >> 49) & 0x7);
+ public AtomOp Op => (AtomOp)((_opcode >> 52) & 0xF);
+ public bool E => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstAtomCas
+ {
+ private ulong _opcode;
+ public InstAtomCas(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int BcRz => (int)((_opcode >> 50) & 0x3);
+ public bool E => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstAtoms
+ {
+ private ulong _opcode;
+ public InstAtoms(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm22 => (int)((_opcode >> 30) & 0x3FFFFF);
+ public AtomsSize AtomsSize => (AtomsSize)((_opcode >> 28) & 0x3);
+ public AtomOp AtomOp => (AtomOp)((_opcode >> 52) & 0xF);
+ }
+
+ struct InstAtomsCas
+ {
+ private ulong _opcode;
+ public InstAtomsCas(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int AtomsBcRz => (int)((_opcode >> 28) & 0x3);
+ }
+
+ struct InstB2r
+ {
+ private ulong _opcode;
+ public InstB2r(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int DestPred => (int)((_opcode >> 45) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public BarMode Mode => (BarMode)((_opcode >> 32) & 0x3);
+ }
+
+ struct InstBar
+ {
+ private ulong _opcode;
+ public InstBar(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm12 => (int)((_opcode >> 20) & 0xFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public BarOp BarOp => (BarOp)((_opcode >> 32) & 0x7);
+ public BarRedOp BarRedOp => (BarRedOp)((_opcode >> 35) & 0x3);
+ public bool AFixBar => (_opcode & 0x100000000000) != 0;
+ public bool BFixBar => (_opcode & 0x80000000000) != 0;
+ }
+
+ struct InstBfeR
+ {
+ private ulong _opcode;
+ public InstBfeR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public bool Brev => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstBfeI
+ {
+ private ulong _opcode;
+ public InstBfeI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public bool Brev => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstBfeC
+ {
+ private ulong _opcode;
+ public InstBfeC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public bool Brev => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstBfiR
+ {
+ private ulong _opcode;
+ public InstBfiR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstBfiI
+ {
+ private ulong _opcode;
+ public InstBfiI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstBfiC
+ {
+ private ulong _opcode;
+ public InstBfiC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstBfiRc
+ {
+ private ulong _opcode;
+ public InstBfiRc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstBpt
+ {
+ private ulong _opcode;
+ public InstBpt(ulong opcode) => _opcode = opcode;
+ public int Imm20 => (int)((_opcode >> 20) & 0xFFFFF);
+ public Bpt Bpt => (Bpt)((_opcode >> 6) & 0x7);
+ }
+
+ struct InstBra
+ {
+ private ulong _opcode;
+ public InstBra(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ public bool Ca => (_opcode & 0x20) != 0;
+ public bool Lmt => (_opcode & 0x40) != 0;
+ public bool U => (_opcode & 0x80) != 0;
+ }
+
+ struct InstBrk
+ {
+ private ulong _opcode;
+ public InstBrk(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ }
+
+ struct InstBrx
+ {
+ private ulong _opcode;
+ public InstBrx(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ public bool Ca => (_opcode & 0x20) != 0;
+ public bool Lmt => (_opcode & 0x40) != 0;
+ }
+
+ struct InstCal
+ {
+ private ulong _opcode;
+ public InstCal(ulong opcode) => _opcode = opcode;
+ public bool Ca => (_opcode & 0x20) != 0;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ public bool Inc => (_opcode & 0x40) != 0;
+ }
+
+ struct InstCctl
+ {
+ private ulong _opcode;
+ public InstCctl(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm30 => (int)((_opcode >> 22) & 0x3FFFFFFF);
+ public bool E => (_opcode & 0x10000000000000) != 0;
+ public CacheType Cache => (CacheType)((_opcode >> 4) & 0x7);
+ public CctlOp CctlOp => (CctlOp)((_opcode >> 0) & 0xF);
+ }
+
+ struct InstCctll
+ {
+ private ulong _opcode;
+ public InstCctll(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm22 => (int)((_opcode >> 22) & 0x3FFFFF);
+ public int Cache => (int)((_opcode >> 4) & 0x3);
+ public CctlOp CctlOp => (CctlOp)((_opcode >> 0) & 0xF);
+ }
+
+ struct InstCctlt
+ {
+ private ulong _opcode;
+ public InstCctlt(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int TsIdx13 => (int)((_opcode >> 36) & 0x1FFF);
+ public CctltOp CctltOp => (CctltOp)((_opcode >> 0) & 0x3);
+ }
+
+ struct InstCctltR
+ {
+ private ulong _opcode;
+ public InstCctltR(ulong opcode) => _opcode = opcode;
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public CctltOp CctltOp => (CctltOp)((_opcode >> 0) & 0x3);
+ }
+
+ struct InstCont
+ {
+ private ulong _opcode;
+ public InstCont(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ }
+
+ struct InstCset
+ {
+ private ulong _opcode;
+ public InstCset(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public bool BVal => (_opcode & 0x100000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ }
+
+ struct InstCsetp
+ {
+ private ulong _opcode;
+ public InstCsetp(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ }
+
+ struct InstCs2r
+ {
+ private ulong _opcode;
+ public InstCs2r(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public SReg SReg => (SReg)((_opcode >> 20) & 0xFF);
+ }
+
+ struct InstDaddR
+ {
+ private ulong _opcode;
+ public InstDaddR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstDaddI
+ {
+ private ulong _opcode;
+ public InstDaddI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstDaddC
+ {
+ private ulong _opcode;
+ public InstDaddC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstDepbar
+ {
+ private ulong _opcode;
+ public InstDepbar(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Le => (_opcode & 0x20000000) != 0;
+ public int Sbid => (int)((_opcode >> 26) & 0x7);
+ public int PendCnt => (int)((_opcode >> 20) & 0x3F);
+ public int Imm6 => (int)((_opcode >> 0) & 0x3F);
+ }
+
+ struct InstDfmaR
+ {
+ private ulong _opcode;
+ public InstDfmaR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstDfmaI
+ {
+ private ulong _opcode;
+ public InstDfmaI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstDfmaC
+ {
+ private ulong _opcode;
+ public InstDfmaC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstDfmaRc
+ {
+ private ulong _opcode;
+ public InstDfmaRc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstDmnmxR
+ {
+ private ulong _opcode;
+ public InstDmnmxR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstDmnmxI
+ {
+ private ulong _opcode;
+ public InstDmnmxI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstDmnmxC
+ {
+ private ulong _opcode;
+ public InstDmnmxC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstDmulR
+ {
+ private ulong _opcode;
+ public InstDmulR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstDmulI
+ {
+ private ulong _opcode;
+ public InstDmulI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstDmulC
+ {
+ private ulong _opcode;
+ public InstDmulC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstDsetR
+ {
+ private ulong _opcode;
+ public InstDsetR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsA => (_opcode & 0x40000000000000) != 0;
+ public bool NegB => (_opcode & 0x20000000000000) != 0;
+ public bool BVal => (_opcode & 0x10000000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstDsetI
+ {
+ private ulong _opcode;
+ public InstDsetI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsA => (_opcode & 0x40000000000000) != 0;
+ public bool NegB => (_opcode & 0x20000000000000) != 0;
+ public bool BVal => (_opcode & 0x10000000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstDsetC
+ {
+ private ulong _opcode;
+ public InstDsetC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsA => (_opcode & 0x40000000000000) != 0;
+ public bool NegB => (_opcode & 0x20000000000000) != 0;
+ public bool BVal => (_opcode & 0x10000000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstDsetpR
+ {
+ private ulong _opcode;
+ public InstDsetpR(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool AbsA => (_opcode & 0x80) != 0;
+ public bool NegB => (_opcode & 0x40) != 0;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ }
+
+ struct InstDsetpI
+ {
+ private ulong _opcode;
+ public InstDsetpI(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool AbsA => (_opcode & 0x80) != 0;
+ public bool NegB => (_opcode & 0x40) != 0;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ }
+
+ struct InstDsetpC
+ {
+ private ulong _opcode;
+ public InstDsetpC(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool AbsA => (_opcode & 0x80) != 0;
+ public bool NegB => (_opcode & 0x40) != 0;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ }
+
+ struct InstExit
+ {
+ private ulong _opcode;
+ public InstExit(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ public bool KeepRefCnt => (_opcode & 0x20) != 0;
+ }
+
+ struct InstF2fR
+ {
+ private ulong _opcode;
+ public InstF2fR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
+ public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
+ public IntegerRound RoundMode => (IntegerRound)((int)((_opcode >> 40) & 0x4) | (int)((_opcode >> 39) & 0x3));
+ public bool Sh => (_opcode & 0x20000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstF2fI
+ {
+ private ulong _opcode;
+ public InstF2fI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
+ public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
+ public IntegerRound RoundMode => (IntegerRound)((int)((_opcode >> 40) & 0x4) | (int)((_opcode >> 39) & 0x3));
+ public bool Sh => (_opcode & 0x20000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstF2fC
+ {
+ private ulong _opcode;
+ public InstF2fC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
+ public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
+ public IntegerRound RoundMode => (IntegerRound)((int)((_opcode >> 40) & 0x4) | (int)((_opcode >> 39) & 0x3));
+ public bool Sh => (_opcode & 0x20000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstF2iR
+ {
+ private ulong _opcode;
+ public InstF2iR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public bool Sh => (_opcode & 0x20000000000) != 0;
+ public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
+ public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
+ public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstF2iI
+ {
+ private ulong _opcode;
+ public InstF2iI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public bool Sh => (_opcode & 0x20000000000) != 0;
+ public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
+ public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
+ public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstF2iC
+ {
+ private ulong _opcode;
+ public InstF2iC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public bool Sh => (_opcode & 0x20000000000) != 0;
+ public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
+ public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
+ public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstFaddR
+ {
+ private ulong _opcode;
+ public InstFaddR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstFaddI
+ {
+ private ulong _opcode;
+ public InstFaddI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstFaddC
+ {
+ private ulong _opcode;
+ public InstFaddC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstFadd32i
+ {
+ private ulong _opcode;
+ public InstFadd32i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x10000000000000) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ public bool AbsB => (_opcode & 0x200000000000000) != 0;
+ public bool NegA => (_opcode & 0x100000000000000) != 0;
+ public bool Ftz => (_opcode & 0x80000000000000) != 0;
+ public bool AbsA => (_opcode & 0x40000000000000) != 0;
+ public bool NegB => (_opcode & 0x20000000000000) != 0;
+ }
+
+ struct InstFchkR
+ {
+ private ulong _opcode;
+ public InstFchkR(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
+ }
+
+ struct InstFchkI
+ {
+ private ulong _opcode;
+ public InstFchkI(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
+ }
+
+ struct InstFchkC
+ {
+ private ulong _opcode;
+ public InstFchkC(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
+ }
+
+ struct InstFcmpR
+ {
+ private ulong _opcode;
+ public InstFcmpR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public bool Ftz => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstFcmpI
+ {
+ private ulong _opcode;
+ public InstFcmpI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public bool Ftz => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstFcmpC
+ {
+ private ulong _opcode;
+ public InstFcmpC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public bool Ftz => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstFcmpRc
+ {
+ private ulong _opcode;
+ public InstFcmpRc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public bool Ftz => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstFfmaR
+ {
+ private ulong _opcode;
+ public InstFfmaR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
+ public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
+ }
+
+ struct InstFfmaI
+ {
+ private ulong _opcode;
+ public InstFfmaI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
+ public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
+ }
+
+ struct InstFfmaC
+ {
+ private ulong _opcode;
+ public InstFfmaC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
+ public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
+ }
+
+ struct InstFfmaRc
+ {
+ private ulong _opcode;
+ public InstFfmaRc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
+ public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
+ }
+
+ struct InstFfma32i
+ {
+ private ulong _opcode;
+ public InstFfma32i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm32 => (int)(_opcode >> 20);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegC => (_opcode & 0x200000000000000) != 0;
+ public bool NegA => (_opcode & 0x100000000000000) != 0;
+ public bool Sat => (_opcode & 0x80000000000000) != 0;
+ public bool WriteCC => (_opcode & 0x10000000000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
+ }
+
+ struct InstFloR
+ {
+ private ulong _opcode;
+ public InstFloR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public bool Sh => (_opcode & 0x20000000000) != 0;
+ public bool NegB => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstFloI
+ {
+ private ulong _opcode;
+ public InstFloI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public bool Sh => (_opcode & 0x20000000000) != 0;
+ public bool NegB => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstFloC
+ {
+ private ulong _opcode;
+ public InstFloC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public bool Sh => (_opcode & 0x20000000000) != 0;
+ public bool NegB => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstFmnmxR
+ {
+ private ulong _opcode;
+ public InstFmnmxR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstFmnmxI
+ {
+ private ulong _opcode;
+ public InstFmnmxI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstFmnmxC
+ {
+ private ulong _opcode;
+ public InstFmnmxC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstFmulR
+ {
+ private ulong _opcode;
+ public InstFmulR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public Fmz Fmz => (Fmz)((_opcode >> 44) & 0x3);
+ public MultiplyScale Scale => (MultiplyScale)((_opcode >> 41) & 0x7);
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstFmulI
+ {
+ private ulong _opcode;
+ public InstFmulI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public Fmz Fmz => (Fmz)((_opcode >> 44) & 0x3);
+ public MultiplyScale Scale => (MultiplyScale)((_opcode >> 41) & 0x7);
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstFmulC
+ {
+ private ulong _opcode;
+ public InstFmulC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public Fmz Fmz => (Fmz)((_opcode >> 44) & 0x3);
+ public MultiplyScale Scale => (MultiplyScale)((_opcode >> 41) & 0x7);
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstFmul32i
+ {
+ private ulong _opcode;
+ public InstFmul32i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ public bool Sat => (_opcode & 0x80000000000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
+ public bool WriteCC => (_opcode & 0x10000000000000) != 0;
+ }
+
+ struct InstFsetR
+ {
+ private ulong _opcode;
+ public InstFsetR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x20000000000000) != 0;
+ public bool AbsA => (_opcode & 0x40000000000000) != 0;
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool Ftz => (_opcode & 0x80000000000000) != 0;
+ public bool BVal => (_opcode & 0x10000000000000) != 0;
+ }
+
+ struct InstFsetC
+ {
+ private ulong _opcode;
+ public InstFsetC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x20000000000000) != 0;
+ public bool AbsA => (_opcode & 0x40000000000000) != 0;
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool Ftz => (_opcode & 0x80000000000000) != 0;
+ public bool BVal => (_opcode & 0x10000000000000) != 0;
+ }
+
+ struct InstFsetI
+ {
+ private ulong _opcode;
+ public InstFsetI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x20000000000000) != 0;
+ public bool AbsA => (_opcode & 0x40000000000000) != 0;
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool Ftz => (_opcode & 0x80000000000000) != 0;
+ public bool BVal => (_opcode & 0x10000000000000) != 0;
+ }
+
+ struct InstFsetpR
+ {
+ private ulong _opcode;
+ public InstFsetpR(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x40) != 0;
+ public bool AbsA => (_opcode & 0x80) != 0;
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool Ftz => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstFsetpI
+ {
+ private ulong _opcode;
+ public InstFsetpI(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x40) != 0;
+ public bool AbsA => (_opcode & 0x80) != 0;
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool Ftz => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstFsetpC
+ {
+ private ulong _opcode;
+ public InstFsetpC(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x40) != 0;
+ public bool AbsA => (_opcode & 0x80) != 0;
+ public bool AbsB => (_opcode & 0x100000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool Ftz => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstFswzadd
+ {
+ private ulong _opcode;
+ public InstFswzadd(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Ftz => (_opcode & 0x100000000000) != 0;
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public bool Ndv => (_opcode & 0x4000000000) != 0;
+ public int PnWord => (int)((_opcode >> 28) & 0xFF);
+ }
+
+ struct InstGetcrsptr
+ {
+ private ulong _opcode;
+ public InstGetcrsptr(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ }
+
+ struct InstGetlmembase
+ {
+ private ulong _opcode;
+ public InstGetlmembase(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ }
+
+ struct InstHadd2R
+ {
+ private ulong _opcode;
+ public InstHadd2R(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x80000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool AbsB => (_opcode & 0x40000000) != 0;
+ public bool Sat => (_opcode & 0x100000000) != 0;
+ public bool Ftz => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstHadd2I
+ {
+ private ulong _opcode;
+ public InstHadd2I(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
+ public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool Sat => (_opcode & 0x10000000000000) != 0;
+ public bool Ftz => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstHadd2C
+ {
+ private ulong _opcode;
+ public InstHadd2C(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x100000000000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool AbsB => (_opcode & 0x40000000000000) != 0;
+ public bool Sat => (_opcode & 0x10000000000000) != 0;
+ public bool Ftz => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstHadd232i
+ {
+ private ulong _opcode;
+ public InstHadd232i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm => (int)(_opcode >> 20);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x100000000000000) != 0;
+ public bool Sat => (_opcode & 0x10000000000000) != 0;
+ public bool Ftz => (_opcode & 0x80000000000000) != 0;
+ }
+
+ struct InstHfma2R
+ {
+ private ulong _opcode;
+ public InstHfma2R(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
+ public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 35) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000) != 0;
+ public bool NegC => (_opcode & 0x40000000) != 0;
+ public bool Sat => (_opcode & 0x100000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 37) & 0x3);
+ }
+
+ struct InstHfma2I
+ {
+ private ulong _opcode;
+ public InstHfma2I(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
+ public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegC => (_opcode & 0x8000000000000) != 0;
+ public bool Sat => (_opcode & 0x10000000000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
+ }
+
+ struct InstHfma2C
+ {
+ private ulong _opcode;
+ public InstHfma2C(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x100000000000000) != 0;
+ public bool NegC => (_opcode & 0x8000000000000) != 0;
+ public bool Sat => (_opcode & 0x10000000000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
+ }
+
+ struct InstHfma2Rc
+ {
+ private ulong _opcode;
+ public InstHfma2Rc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x100000000000000) != 0;
+ public bool NegC => (_opcode & 0x8000000000000) != 0;
+ public bool Sat => (_opcode & 0x10000000000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
+ }
+
+ struct InstHfma232i
+ {
+ private ulong _opcode;
+ public InstHfma232i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm => (int)(_opcode >> 20);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegC => (_opcode & 0x8000000000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
+ }
+
+ struct InstHmul2R
+ {
+ private ulong _opcode;
+ public InstHmul2R(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool AbsB => (_opcode & 0x40000000) != 0;
+ public bool Sat => (_opcode & 0x100000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstHmul2I
+ {
+ private ulong _opcode;
+ public InstHmul2I(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
+ public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool Sat => (_opcode & 0x10000000000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstHmul2C
+ {
+ private ulong _opcode;
+ public InstHmul2C(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool AbsB => (_opcode & 0x40000000000000) != 0;
+ public bool Sat => (_opcode & 0x10000000000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstHmul232i
+ {
+ private ulong _opcode;
+ public InstHmul232i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm32 => (int)(_opcode >> 20);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Sat => (_opcode & 0x10000000000000) != 0;
+ public Fmz Fmz => (Fmz)((_opcode >> 55) & 0x3);
+ }
+
+ struct InstHset2R
+ {
+ private ulong _opcode;
+ public InstHset2R(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool NegB => (_opcode & 0x80000000) != 0;
+ public bool AbsB => (_opcode & 0x40000000) != 0;
+ public bool Bval => (_opcode & 0x2000000000000) != 0;
+ public FComp Cmp => (FComp)((_opcode >> 35) & 0xF);
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public bool Ftz => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstHset2I
+ {
+ private ulong _opcode;
+ public InstHset2I(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
+ public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool Bval => (_opcode & 0x20000000000000) != 0;
+ public FComp Cmp => (FComp)((_opcode >> 49) & 0xF);
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public bool Ftz => (_opcode & 0x40000000000000) != 0;
+ }
+
+ struct InstHset2C
+ {
+ private ulong _opcode;
+ public InstHset2C(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool NegB => (_opcode & 0x100000000000000) != 0;
+ public bool Bval => (_opcode & 0x20000000000000) != 0;
+ public FComp Cmp => (FComp)((_opcode >> 49) & 0xF);
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public bool Ftz => (_opcode & 0x40000000000000) != 0;
+ }
+
+ struct InstHsetp2R
+ {
+ private ulong _opcode;
+ public InstHsetp2R(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x80000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool AbsB => (_opcode & 0x40000000) != 0;
+ public FComp FComp2 => (FComp)((_opcode >> 35) & 0xF);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool Ftz => (_opcode & 0x40) != 0;
+ public bool HAnd => (_opcode & 0x2000000000000) != 0;
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
+ }
+
+ struct InstHsetp2I
+ {
+ private ulong _opcode;
+ public InstHsetp2I(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
+ public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 49) & 0xF);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool Ftz => (_opcode & 0x40) != 0;
+ public bool HAnd => (_opcode & 0x20000000000000) != 0;
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ }
+
+ struct InstHsetp2C
+ {
+ private ulong _opcode;
+ public InstHsetp2C(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegA => (_opcode & 0x80000000000) != 0;
+ public bool NegB => (_opcode & 0x100000000000000) != 0;
+ public bool AbsA => (_opcode & 0x100000000000) != 0;
+ public bool AbsB => (_opcode & 0x40000000000000) != 0;
+ public FComp FComp => (FComp)((_opcode >> 49) & 0xF);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool Ftz => (_opcode & 0x40) != 0;
+ public bool HAnd => (_opcode & 0x20000000000000) != 0;
+ public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
+ }
+
+ struct InstI2fR
+ {
+ private ulong _opcode;
+ public InstI2fR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public ISrcFmt ISrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
+ public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
+ }
+
+ struct InstI2fI
+ {
+ private ulong _opcode;
+ public InstI2fI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public ISrcFmt ISrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
+ public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
+ }
+
+ struct InstI2fC
+ {
+ private ulong _opcode;
+ public InstI2fC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
+ public ISrcFmt ISrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
+ public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
+ }
+
+ struct InstI2iR
+ {
+ private ulong _opcode;
+ public InstI2iR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public ISrcDstFmt IDstFmt => (ISrcDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
+ public ISrcDstFmt ISrcFmt => (ISrcDstFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
+ }
+
+ struct InstI2iI
+ {
+ private ulong _opcode;
+ public InstI2iI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public ISrcDstFmt IDstFmt => (ISrcDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
+ public ISrcDstFmt ISrcFmt => (ISrcDstFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
+ }
+
+ struct InstI2iC
+ {
+ private ulong _opcode;
+ public InstI2iC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public ISrcDstFmt IDstFmt => (ISrcDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
+ public ISrcDstFmt ISrcFmt => (ISrcDstFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
+ }
+
+ struct InstIaddR
+ {
+ private ulong _opcode;
+ public InstIaddR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ }
+
+ struct InstIaddI
+ {
+ private ulong _opcode;
+ public InstIaddI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ }
+
+ struct InstIaddC
+ {
+ private ulong _opcode;
+ public InstIaddC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ }
+
+ struct InstIadd32i
+ {
+ private ulong _opcode;
+ public InstIadd32i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 55) & 0x3);
+ public bool Sat => (_opcode & 0x40000000000000) != 0;
+ public bool WriteCC => (_opcode & 0x10000000000000) != 0;
+ public bool X => (_opcode & 0x20000000000000) != 0;
+ }
+
+ struct InstIadd3R
+ {
+ private ulong _opcode;
+ public InstIadd3R(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x8000000000000) != 0;
+ public bool NegB => (_opcode & 0x4000000000000) != 0;
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool X => (_opcode & 0x1000000000000) != 0;
+ public Lrs Lrs => (Lrs)((_opcode >> 37) & 0x3);
+ public HalfSelect Apart => (HalfSelect)((_opcode >> 35) & 0x3);
+ public HalfSelect Bpart => (HalfSelect)((_opcode >> 33) & 0x3);
+ public HalfSelect Cpart => (HalfSelect)((_opcode >> 31) & 0x3);
+ }
+
+ struct InstIadd3I
+ {
+ private ulong _opcode;
+ public InstIadd3I(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x8000000000000) != 0;
+ public bool NegB => (_opcode & 0x4000000000000) != 0;
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool X => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstIadd3C
+ {
+ private ulong _opcode;
+ public InstIadd3C(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool NegA => (_opcode & 0x8000000000000) != 0;
+ public bool NegB => (_opcode & 0x4000000000000) != 0;
+ public bool NegC => (_opcode & 0x2000000000000) != 0;
+ public bool X => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstIcmpR
+ {
+ private ulong _opcode;
+ public InstIcmpR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstIcmpI
+ {
+ private ulong _opcode;
+ public InstIcmpI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstIcmpC
+ {
+ private ulong _opcode;
+ public InstIcmpC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstIcmpRc
+ {
+ private ulong _opcode;
+ public InstIcmpRc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstIde
+ {
+ private ulong _opcode;
+ public InstIde(ulong opcode) => _opcode = opcode;
+ public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
+ public bool Di => (_opcode & 0x20) != 0;
+ }
+
+ struct InstIdpR
+ {
+ private ulong _opcode;
+ public InstIdpR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool IsHi => (_opcode & 0x4000000000000) != 0;
+ public bool SrcASign => (_opcode & 0x2000000000000) != 0;
+ public bool IsDp => (_opcode & 0x1000000000000) != 0;
+ public bool SrcBSign => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstIdpC
+ {
+ private ulong _opcode;
+ public InstIdpC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool IsHi => (_opcode & 0x4000000000000) != 0;
+ public bool SrcASign => (_opcode & 0x2000000000000) != 0;
+ public bool IsDp => (_opcode & 0x1000000000000) != 0;
+ public bool SrcBSign => (_opcode & 0x800000000000) != 0;
+ }
+
+ struct InstImadR
+ {
+ private ulong _opcode;
+ public InstImadR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Hilo => (_opcode & 0x40000000000000) != 0;
+ public bool BSigned => (_opcode & 0x20000000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool X => (_opcode & 0x2000000000000) != 0;
+ public bool ASigned => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstImadI
+ {
+ private ulong _opcode;
+ public InstImadI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Hilo => (_opcode & 0x40000000000000) != 0;
+ public bool BSigned => (_opcode & 0x20000000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool X => (_opcode & 0x2000000000000) != 0;
+ public bool ASigned => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstImadC
+ {
+ private ulong _opcode;
+ public InstImadC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Hilo => (_opcode & 0x40000000000000) != 0;
+ public bool BSigned => (_opcode & 0x20000000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool X => (_opcode & 0x2000000000000) != 0;
+ public bool ASigned => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstImadRc
+ {
+ private ulong _opcode;
+ public InstImadRc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Hilo => (_opcode & 0x40000000000000) != 0;
+ public bool BSigned => (_opcode & 0x20000000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool X => (_opcode & 0x2000000000000) != 0;
+ public bool ASigned => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstImad32i
+ {
+ private ulong _opcode;
+ public InstImad32i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ public bool BSigned => (_opcode & 0x200000000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 55) & 0x3);
+ public bool ASigned => (_opcode & 0x40000000000000) != 0;
+ public bool WriteCC => (_opcode & 0x10000000000000) != 0;
+ public bool Hilo => (_opcode & 0x20000000000000) != 0;
+ }
+
+ struct InstImadspR
+ {
+ private ulong _opcode;
+ public InstImadspR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
+ public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
+ public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
+ }
+
+ struct InstImadspI
+ {
+ private ulong _opcode;
+ public InstImadspI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
+ public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
+ public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
+ }
+
+ struct InstImadspC
+ {
+ private ulong _opcode;
+ public InstImadspC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
+ public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
+ public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
+ }
+
+ struct InstImadspRc
+ {
+ private ulong _opcode;
+ public InstImadspRc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
+ public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
+ public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
+ }
+
+ struct InstImnmxR
+ {
+ private ulong _opcode;
+ public InstImnmxR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstImnmxI
+ {
+ private ulong _opcode;
+ public InstImnmxI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstImnmxC
+ {
+ private ulong _opcode;
+ public InstImnmxC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstImulR
+ {
+ private ulong _opcode;
+ public InstImulR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool ASigned => (_opcode & 0x10000000000) != 0;
+ public bool BSigned => (_opcode & 0x20000000000) != 0;
+ public bool Hilo => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstImulI
+ {
+ private ulong _opcode;
+ public InstImulI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool ASigned => (_opcode & 0x10000000000) != 0;
+ public bool BSigned => (_opcode & 0x20000000000) != 0;
+ public bool Hilo => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstImulC
+ {
+ private ulong _opcode;
+ public InstImulC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool ASigned => (_opcode & 0x10000000000) != 0;
+ public bool BSigned => (_opcode & 0x20000000000) != 0;
+ public bool Hilo => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstImul32i
+ {
+ private ulong _opcode;
+ public InstImul32i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ public bool ASigned => (_opcode & 0x40000000000000) != 0;
+ public bool BSigned => (_opcode & 0x80000000000000) != 0;
+ public bool Hilo => (_opcode & 0x20000000000000) != 0;
+ public bool WriteCC => (_opcode & 0x10000000000000) != 0;
+ }
+
+ struct InstIpa
+ {
+ private ulong _opcode;
+ public InstIpa(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public IpaOp IpaOp => (IpaOp)((_opcode >> 54) & 0x3);
+ public int Msi => (int)((_opcode >> 52) & 0x3);
+ public bool Sat => (_opcode & 0x8000000000000) != 0;
+ public bool Idx => (_opcode & 0x4000000000) != 0;
+ public int Imm10 => (int)((_opcode >> 28) & 0x3FF);
+ public int SrcPred => (int)((_opcode >> 47) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstIsberd
+ {
+ private ulong _opcode;
+ public InstIsberd(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
+ public IBase IBase => (IBase)((_opcode >> 33) & 0x3);
+ public bool O => (_opcode & 0x100000000) != 0;
+ public bool P => (_opcode & 0x80000000) != 0;
+ }
+
+ struct InstIscaddR
+ {
+ private ulong _opcode;
+ public InstIscaddR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public int Imm5 => (int)((_opcode >> 39) & 0x1F);
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
+ }
+
+ struct InstIscaddI
+ {
+ private ulong _opcode;
+ public InstIscaddI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public int Imm5 => (int)((_opcode >> 39) & 0x1F);
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
+ }
+
+ struct InstIscaddC
+ {
+ private ulong _opcode;
+ public InstIscaddC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public int Imm5 => (int)((_opcode >> 39) & 0x1F);
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
+ }
+
+ struct InstIscadd32i
+ {
+ private ulong _opcode;
+ public InstIscadd32i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ public bool WriteCC => (_opcode & 0x10000000000000) != 0;
+ public int Imm5 => (int)((_opcode >> 53) & 0x1F);
+ }
+
+ struct InstIsetR
+ {
+ private ulong _opcode;
+ public InstIsetR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public bool BVal => (_opcode & 0x100000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ }
+
+ struct InstIsetI
+ {
+ private ulong _opcode;
+ public InstIsetI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public bool BVal => (_opcode & 0x100000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ }
+
+ struct InstIsetC
+ {
+ private ulong _opcode;
+ public InstIsetC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public bool BVal => (_opcode & 0x100000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ }
+
+ struct InstIsetpR
+ {
+ private ulong _opcode;
+ public InstIsetpR(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ }
+
+ struct InstIsetpI
+ {
+ private ulong _opcode;
+ public InstIsetpI(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ }
+
+ struct InstIsetpC
+ {
+ private ulong _opcode;
+ public InstIsetpC(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ }
+
+ struct InstJcal
+ {
+ private ulong _opcode;
+ public InstJcal(ulong opcode) => _opcode = opcode;
+ public int Imm32 => (int)(_opcode >> 20);
+ public bool Ca => (_opcode & 0x20) != 0;
+ public bool Inc => (_opcode & 0x40) != 0;
+ }
+
+ struct InstJmp
+ {
+ private ulong _opcode;
+ public InstJmp(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ public bool Ca => (_opcode & 0x20) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ public bool Lmt => (_opcode & 0x40) != 0;
+ public bool U => (_opcode & 0x80) != 0;
+ }
+
+ struct InstJmx
+ {
+ private ulong _opcode;
+ public InstJmx(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ public bool Ca => (_opcode & 0x20) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ public bool Lmt => (_opcode & 0x40) != 0;
+ }
+
+ struct InstKil
+ {
+ private ulong _opcode;
+ public InstKil(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ }
+
+ struct InstLd
+ {
+ private ulong _opcode;
+ public InstLd(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int SrcPred => (int)((_opcode >> 58) & 0x7);
+ public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 56) & 0x3);
+ public LsSize LsSize => (LsSize)((_opcode >> 53) & 0x7);
+ public bool E => (_opcode & 0x10000000000000) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ }
+
+ struct InstLdc
+ {
+ private ulong _opcode;
+ public InstLdc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
+ public AddressMode AddressMode => (AddressMode)((_opcode >> 44) & 0x3);
+ public int CbufSlot => (int)((_opcode >> 36) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0xFFFF);
+ }
+
+ struct InstLdg
+ {
+ private ulong _opcode;
+ public InstLdg(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public LsSize LsSize => (LsSize)((_opcode >> 48) & 0x7);
+ public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 46) & 0x3);
+ public bool E => (_opcode & 0x200000000000) != 0;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ }
+
+ struct InstLdl
+ {
+ private ulong _opcode;
+ public InstLdl(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
+ public CacheOp2 CacheOp => (CacheOp2)((_opcode >> 44) & 0x3);
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ }
+
+ struct InstLds
+ {
+ private ulong _opcode;
+ public InstLds(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
+ public bool U => (_opcode & 0x100000000000) != 0;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ }
+
+ struct InstLeaR
+ {
+ private ulong _opcode;
+ public InstLeaR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x400000000000) != 0;
+ public bool NegA => (_opcode & 0x200000000000) != 0;
+ public int ImmU5 => (int)((_opcode >> 39) & 0x1F);
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ }
+
+ struct InstLeaI
+ {
+ private ulong _opcode;
+ public InstLeaI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x400000000000) != 0;
+ public bool NegA => (_opcode & 0x200000000000) != 0;
+ public int ImmU5 => (int)((_opcode >> 39) & 0x1F);
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ }
+
+ struct InstLeaC
+ {
+ private ulong _opcode;
+ public InstLeaC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x400000000000) != 0;
+ public bool NegA => (_opcode & 0x200000000000) != 0;
+ public int ImmU5 => (int)((_opcode >> 39) & 0x1F);
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ }
+
+ struct InstLeaHiR
+ {
+ private ulong _opcode;
+ public InstLeaHiR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x4000000000) != 0;
+ public bool NegA => (_opcode & 0x2000000000) != 0;
+ public int ImmU5 => (int)((_opcode >> 28) & 0x1F);
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ }
+
+ struct InstLeaHiC
+ {
+ private ulong _opcode;
+ public InstLeaHiC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x200000000000000) != 0;
+ public bool NegA => (_opcode & 0x100000000000000) != 0;
+ public int ImmU5 => (int)((_opcode >> 51) & 0x1F);
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ }
+
+ struct InstLepc
+ {
+ private ulong _opcode;
+ public InstLepc(ulong opcode) => _opcode = opcode;
+ }
+
+ struct InstLongjmp
+ {
+ private ulong _opcode;
+ public InstLongjmp(ulong opcode) => _opcode = opcode;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ }
+
+ struct InstLopR
+ {
+ private ulong _opcode;
+ public InstLopR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 44) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ public LogicOp Lop => (LogicOp)((_opcode >> 41) & 0x3);
+ public bool NegA => (_opcode & 0x8000000000) != 0;
+ public bool NegB => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstLopI
+ {
+ private ulong _opcode;
+ public InstLopI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 44) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ public LogicOp LogicOp => (LogicOp)((_opcode >> 41) & 0x3);
+ public bool NegA => (_opcode & 0x8000000000) != 0;
+ public bool NegB => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstLopC
+ {
+ private ulong _opcode;
+ public InstLopC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 44) & 0x3);
+ public bool X => (_opcode & 0x80000000000) != 0;
+ public LogicOp LogicOp => (LogicOp)((_opcode >> 41) & 0x3);
+ public bool NegA => (_opcode & 0x8000000000) != 0;
+ public bool NegB => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstLop3R
+ {
+ private ulong _opcode;
+ public InstLop3R(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 36) & 0x3);
+ public bool X => (_opcode & 0x4000000000) != 0;
+ public int Imm => (int)((_opcode >> 28) & 0xFF);
+ }
+
+ struct InstLop3I
+ {
+ private ulong _opcode;
+ public InstLop3I(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x200000000000000) != 0;
+ public int Imm => (int)((_opcode >> 48) & 0xFF);
+ }
+
+ struct InstLop3C
+ {
+ private ulong _opcode;
+ public InstLop3C(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x100000000000000) != 0;
+ public int Imm => (int)((_opcode >> 48) & 0xFF);
+ }
+
+ struct InstLop32i
+ {
+ private ulong _opcode;
+ public InstLop32i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x10000000000000) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ public bool X => (_opcode & 0x200000000000000) != 0;
+ public LogicOp LogicOp => (LogicOp)((_opcode >> 53) & 0x3);
+ public bool NegA => (_opcode & 0x80000000000000) != 0;
+ public bool NegB => (_opcode & 0x100000000000000) != 0;
+ }
+
+ struct InstMembar
+ {
+ private ulong _opcode;
+ public InstMembar(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Membar Membar => (Membar)((_opcode >> 8) & 0x3);
+ public Ivall Ivall => (Ivall)((_opcode >> 0) & 0x3);
+ }
+
+ struct InstMovR
+ {
+ private ulong _opcode;
+ public InstMovR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int QuadMask => (int)((_opcode >> 39) & 0xF);
+ }
+
+ struct InstMovI
+ {
+ private ulong _opcode;
+ public InstMovI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int QuadMask => (int)((_opcode >> 39) & 0xF);
+ }
+
+ struct InstMovC
+ {
+ private ulong _opcode;
+ public InstMovC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int QuadMask => (int)((_opcode >> 39) & 0xF);
+ }
+
+ struct InstMov32i
+ {
+ private ulong _opcode;
+ public InstMov32i(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Imm32 => (int)(_opcode >> 20);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int QuadMask => (int)((_opcode >> 12) & 0xF);
+ }
+
+ struct InstMufu
+ {
+ private ulong _opcode;
+ public InstMufu(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public MufuOp MufuOp => (MufuOp)((_opcode >> 20) & 0xF);
+ public bool AbsA => (_opcode & 0x400000000000) != 0;
+ public bool NegA => (_opcode & 0x1000000000000) != 0;
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstNop
+ {
+ private ulong _opcode;
+ public InstNop(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
+ public bool Trig => (_opcode & 0x2000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
+ }
+
+ struct InstOutR
+ {
+ private ulong _opcode;
+ public InstOutR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstOutI
+ {
+ private ulong _opcode;
+ public InstOutI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstOutC
+ {
+ private ulong _opcode;
+ public InstOutC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
+ }
+
+ struct InstP2rR
+ {
+ private ulong _opcode;
+ public InstP2rR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public bool Ccpr => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstP2rI
+ {
+ private ulong _opcode;
+ public InstP2rI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public bool Ccpr => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstP2rC
+ {
+ private ulong _opcode;
+ public InstP2rC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public bool Ccpr => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstPbk
+ {
+ private ulong _opcode;
+ public InstPbk(ulong opcode) => _opcode = opcode;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ public bool Ca => (_opcode & 0x20) != 0;
+ }
+
+ struct InstPcnt
+ {
+ private ulong _opcode;
+ public InstPcnt(ulong opcode) => _opcode = opcode;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ public bool Ca => (_opcode & 0x20) != 0;
+ }
+
+ struct InstPexit
+ {
+ private ulong _opcode;
+ public InstPexit(ulong opcode) => _opcode = opcode;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ }
+
+ struct InstPixld
+ {
+ private ulong _opcode;
+ public InstPixld(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int DestPred => (int)((_opcode >> 45) & 0x7);
+ public PixMode PixMode => (PixMode)((_opcode >> 31) & 0x7);
+ public int Imm8 => (int)((_opcode >> 20) & 0xFF);
+ }
+
+ struct InstPlongjmp
+ {
+ private ulong _opcode;
+ public InstPlongjmp(ulong opcode) => _opcode = opcode;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ public bool Ca => (_opcode & 0x20) != 0;
+ }
+
+ struct InstPopcR
+ {
+ private ulong _opcode;
+ public InstPopcR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegB => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstPopcI
+ {
+ private ulong _opcode;
+ public InstPopcI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegB => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstPopcC
+ {
+ private ulong _opcode;
+ public InstPopcC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool NegB => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstPret
+ {
+ private ulong _opcode;
+ public InstPret(ulong opcode) => _opcode = opcode;
+ public bool Ca => (_opcode & 0x20) != 0;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ public bool Inc => (_opcode & 0x40) != 0;
+ }
+
+ struct InstPrmtR
+ {
+ private ulong _opcode;
+ public InstPrmtR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
+ }
+
+ struct InstPrmtI
+ {
+ private ulong _opcode;
+ public InstPrmtI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
+ }
+
+ struct InstPrmtC
+ {
+ private ulong _opcode;
+ public InstPrmtC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
+ }
+
+ struct InstPrmtRc
+ {
+ private ulong _opcode;
+ public InstPrmtRc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
+ }
+
+ struct InstPset
+ {
+ private ulong _opcode;
+ public InstPset(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public int Src2Pred => (int)((_opcode >> 12) & 0x7);
+ public bool Src2PredInv => (_opcode & 0x8000) != 0;
+ public int Src1Pred => (int)((_opcode >> 29) & 0x7);
+ public bool Src1PredInv => (_opcode & 0x100000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp BoolOpAB => (BoolOp)((_opcode >> 24) & 0x3);
+ public BoolOp BoolOpC => (BoolOp)((_opcode >> 45) & 0x3);
+ public bool BVal => (_opcode & 0x100000000000) != 0;
+ }
+
+ struct InstPsetp
+ {
+ private ulong _opcode;
+ public InstPsetp(ulong opcode) => _opcode = opcode;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ public int Src2Pred => (int)((_opcode >> 12) & 0x7);
+ public bool Src2PredInv => (_opcode & 0x8000) != 0;
+ public int Src1Pred => (int)((_opcode >> 29) & 0x7);
+ public bool Src1PredInv => (_opcode & 0x100000000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public BoolOp BoolOpAB => (BoolOp)((_opcode >> 24) & 0x3);
+ public BoolOp BoolOpC => (BoolOp)((_opcode >> 45) & 0x3);
+ }
+
+ struct InstR2b
+ {
+ private ulong _opcode;
+ public InstR2b(ulong opcode) => _opcode = opcode;
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public BarMode Mode => (BarMode)((_opcode >> 32) & 0x3);
+ public int Name => (int)((_opcode >> 28) & 0xF);
+ }
+
+ struct InstR2pR
+ {
+ private ulong _opcode;
+ public InstR2pR(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public bool Ccpr => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstR2pI
+ {
+ private ulong _opcode;
+ public InstR2pI(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public bool Ccpr => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstR2pC
+ {
+ private ulong _opcode;
+ public InstR2pC(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
+ public bool Ccpr => (_opcode & 0x10000000000) != 0;
+ }
+
+ struct InstRam
+ {
+ private ulong _opcode;
+ public InstRam(ulong opcode) => _opcode = opcode;
+ }
+
+ struct InstRed
+ {
+ private ulong _opcode;
+ public InstRed(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 0) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm20 => (int)((_opcode >> 28) & 0xFFFFF);
+ public AtomSize RedSize => (AtomSize)((_opcode >> 20) & 0x7);
+ public RedOp RedOp => (RedOp)((_opcode >> 23) & 0x7);
+ public bool E => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstRet
+ {
+ private ulong _opcode;
+ public InstRet(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ }
+
+ struct InstRroR
+ {
+ private ulong _opcode;
+ public InstRroR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool RroOp => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstRroI
+ {
+ private ulong _opcode;
+ public InstRroI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool RroOp => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstRroC
+ {
+ private ulong _opcode;
+ public InstRroC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool AbsB => (_opcode & 0x2000000000000) != 0;
+ public bool NegB => (_opcode & 0x200000000000) != 0;
+ public bool RroOp => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstRtt
+ {
+ private ulong _opcode;
+ public InstRtt(ulong opcode) => _opcode = opcode;
+ }
+
+ struct InstS2r
+ {
+ private ulong _opcode;
+ public InstS2r(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public SReg SReg => (SReg)((_opcode >> 20) & 0xFF);
+ }
+
+ struct InstSam
+ {
+ private ulong _opcode;
+ public InstSam(ulong opcode) => _opcode = opcode;
+ }
+
+ struct InstSelR
+ {
+ private ulong _opcode;
+ public InstSelR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstSelI
+ {
+ private ulong _opcode;
+ public InstSelI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstSelC
+ {
+ private ulong _opcode;
+ public InstSelC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ }
+
+ struct InstSetcrsptr
+ {
+ private ulong _opcode;
+ public InstSetcrsptr(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ }
+
+ struct InstSetlmembase
+ {
+ private ulong _opcode;
+ public InstSetlmembase(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ }
+
+ struct InstShfLR
+ {
+ private ulong _opcode;
+ public InstShfLR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool M => (_opcode & 0x4000000000000) != 0;
+ public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
+ public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
+ }
+
+ struct InstShfRR
+ {
+ private ulong _opcode;
+ public InstShfRR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool M => (_opcode & 0x4000000000000) != 0;
+ public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
+ public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
+ }
+
+ struct InstShfLI
+ {
+ private ulong _opcode;
+ public InstShfLI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool M => (_opcode & 0x4000000000000) != 0;
+ public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
+ public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
+ public int Imm6 => (int)((_opcode >> 20) & 0x3F);
+ }
+
+ struct InstShfRI
+ {
+ private ulong _opcode;
+ public InstShfRI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool M => (_opcode & 0x4000000000000) != 0;
+ public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
+ public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
+ public int Imm6 => (int)((_opcode >> 20) & 0x3F);
+ }
+
+ struct InstShfl
+ {
+ private ulong _opcode;
+ public InstShfl(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int SrcBImm => (int)((_opcode >> 20) & 0x1F);
+ public int SrcCImm => (int)((_opcode >> 34) & 0x1FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public ShflMode ShflMode => (ShflMode)((_opcode >> 30) & 0x3);
+ public bool CFixShfl => (_opcode & 0x20000000) != 0;
+ public bool BFixShfl => (_opcode & 0x10000000) != 0;
+ public int DestPred => (int)((_opcode >> 48) & 0x7);
+ }
+
+ struct InstShlR
+ {
+ private ulong _opcode;
+ public InstShlR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x80000000000) != 0;
+ public bool M => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstShlI
+ {
+ private ulong _opcode;
+ public InstShlI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x80000000000) != 0;
+ public bool M => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstShlC
+ {
+ private ulong _opcode;
+ public InstShlC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x80000000000) != 0;
+ public bool M => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstShrR
+ {
+ private ulong _opcode;
+ public InstShrR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
+ public bool Brev => (_opcode & 0x10000000000) != 0;
+ public bool M => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstShrI
+ {
+ private ulong _opcode;
+ public InstShrI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
+ public bool Brev => (_opcode & 0x10000000000) != 0;
+ public bool M => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstShrC
+ {
+ private ulong _opcode;
+ public InstShrC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Signed => (_opcode & 0x1000000000000) != 0;
+ public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
+ public bool Brev => (_opcode & 0x10000000000) != 0;
+ public bool M => (_opcode & 0x8000000000) != 0;
+ }
+
+ struct InstSsy
+ {
+ private ulong _opcode;
+ public InstSsy(ulong opcode) => _opcode = opcode;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ public bool Ca => (_opcode & 0x20) != 0;
+ }
+
+ struct InstSt
+ {
+ private ulong _opcode;
+ public InstSt(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int SrcPred => (int)((_opcode >> 58) & 0x7);
+ public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 56) & 0x3);
+ public LsSize LsSize => (LsSize)((_opcode >> 53) & 0x7);
+ public bool E => (_opcode & 0x10000000000000) != 0;
+ public int Imm32 => (int)(_opcode >> 20);
+ }
+
+ struct InstStg
+ {
+ private ulong _opcode;
+ public InstStg(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
+ public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 46) & 0x3);
+ public bool E => (_opcode & 0x200000000000) != 0;
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ }
+
+ struct InstStl
+ {
+ private ulong _opcode;
+ public InstStl(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
+ public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 44) & 0x3);
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ }
+
+ struct InstStp
+ {
+ private ulong _opcode;
+ public InstStp(ulong opcode) => _opcode = opcode;
+ public bool Wait => (_opcode & 0x80000000) != 0;
+ public int Imm8 => (int)((_opcode >> 20) & 0xFF);
+ }
+
+ struct InstSts
+ {
+ private ulong _opcode;
+ public InstSts(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
+ public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
+ }
+
+ struct InstSuatomB
+ {
+ private ulong _opcode;
+ public InstSuatomB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public SuatomSize Size => (SuatomSize)((_opcode >> 36) & 0x7);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public SuatomOp Op => (SuatomOp)((_opcode >> 29) & 0xF);
+ public bool Ba => (_opcode & 0x10000000) != 0;
+ }
+
+ struct InstSuatom
+ {
+ private ulong _opcode;
+ public InstSuatom(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public SuatomSize Size => (SuatomSize)((_opcode >> 51) & 0x7);
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public SuatomOp Op => (SuatomOp)((_opcode >> 29) & 0xF);
+ public bool Ba => (_opcode & 0x10000000) != 0;
+ }
+
+ struct InstSuatomB2
+ {
+ private ulong _opcode;
+ public InstSuatomB2(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int DestPred => (int)((_opcode >> 51) & 0x7);
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public SuatomSize Size => (SuatomSize)((_opcode >> 36) & 0x7);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public SuatomOp Op => (SuatomOp)((_opcode >> 29) & 0xF);
+ public bool Ba => (_opcode & 0x10000000) != 0;
+ }
+
+ struct InstSuatomCasB
+ {
+ private ulong _opcode;
+ public InstSuatomCasB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public SuatomSize Size => (SuatomSize)((_opcode >> 36) & 0x7);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public int DestPred => (int)((_opcode >> 30) & 0x7);
+ public bool Ba => (_opcode & 0x10000000) != 0;
+ }
+
+ struct InstSuatomCas
+ {
+ private ulong _opcode;
+ public InstSuatomCas(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public SuatomSize Size => (SuatomSize)((_opcode >> 51) & 0x7);
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public int DestPred => (int)((_opcode >> 30) & 0x7);
+ public bool Ba => (_opcode & 0x10000000) != 0;
+ }
+
+ struct InstSuldDB
+ {
+ private ulong _opcode;
+ public InstSuldDB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public int DestPred2 => (int)((_opcode >> 30) & 0x7);
+ public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 24) & 0x3);
+ public bool Ba => (_opcode & 0x800000) != 0;
+ public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
+ }
+
+ struct InstSuldD
+ {
+ private ulong _opcode;
+ public InstSuldD(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public int DestPred2 => (int)((_opcode >> 30) & 0x7);
+ public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 24) & 0x3);
+ public bool Ba => (_opcode & 0x800000) != 0;
+ public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
+ }
+
+ struct InstSuldB
+ {
+ private ulong _opcode;
+ public InstSuldB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public int DestPred2 => (int)((_opcode >> 30) & 0x7);
+ public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 24) & 0x3);
+ public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
+ }
+
+ struct InstSuld
+ {
+ private ulong _opcode;
+ public InstSuld(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public int DestPred2 => (int)((_opcode >> 30) & 0x7);
+ public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 24) & 0x3);
+ public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
+ }
+
+ struct InstSuredB
+ {
+ private ulong _opcode;
+ public InstSuredB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public RedOp Op => (RedOp)((_opcode >> 24) & 0x7);
+ public bool Ba => (_opcode & 0x800000) != 0;
+ public SuatomSize Size => (SuatomSize)((_opcode >> 20) & 0x7);
+ }
+
+ struct InstSured
+ {
+ private ulong _opcode;
+ public InstSured(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public RedOp Op => (RedOp)((_opcode >> 24) & 0x7);
+ public bool Ba => (_opcode & 0x800000) != 0;
+ public SuatomSize Size => (SuatomSize)((_opcode >> 20) & 0x7);
+ }
+
+ struct InstSustDB
+ {
+ private ulong _opcode;
+ public InstSustDB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 24) & 0x3);
+ public bool Ba => (_opcode & 0x800000) != 0;
+ public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
+ }
+
+ struct InstSustD
+ {
+ private ulong _opcode;
+ public InstSustD(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 24) & 0x3);
+ public bool Ba => (_opcode & 0x800000) != 0;
+ public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
+ }
+
+ struct InstSustB
+ {
+ private ulong _opcode;
+ public InstSustB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 24) & 0x3);
+ public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
+ }
+
+ struct InstSust
+ {
+ private ulong _opcode;
+ public InstSust(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
+ public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 24) & 0x3);
+ public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
+ }
+
+ struct InstSync
+ {
+ private ulong _opcode;
+ public InstSync(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
+ }
+
+ struct InstTex
+ {
+ private ulong _opcode;
+ public InstTex(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Lc => (_opcode & 0x400000000000000) != 0;
+ public int DestPred => (int)((_opcode >> 51) & 0x7);
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public Lod Lod => (Lod)((_opcode >> 55) & 0x7);
+ public bool Aoffi => (_opcode & 0x40000000000000) != 0;
+ public bool Dc => (_opcode & 0x4000000000000) != 0;
+ public bool Ndv => (_opcode & 0x800000000) != 0;
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ }
+
+ struct InstTexB
+ {
+ private ulong _opcode;
+ public InstTexB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Lcb => (_opcode & 0x10000000000) != 0;
+ public int DestPred => (int)((_opcode >> 51) & 0x7);
+ public Lod Lodb => (Lod)((_opcode >> 37) & 0x7);
+ public bool Aoffib => (_opcode & 0x1000000000) != 0;
+ public bool Dc => (_opcode & 0x4000000000000) != 0;
+ public bool Ndv => (_opcode & 0x800000000) != 0;
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ }
+
+ struct InstTexs
+ {
+ private ulong _opcode;
+ public InstTexs(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public TexsTarget Target => (TexsTarget)((_opcode >> 53) & 0xF);
+ public int WMask => (int)((_opcode >> 50) & 0x7);
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int Dest2 => (int)((_opcode >> 28) & 0xFF);
+ }
+
+ struct InstTld
+ {
+ private ulong _opcode;
+ public InstTld(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public bool Lod => (_opcode & 0x80000000000000) != 0;
+ public bool Toff => (_opcode & 0x800000000) != 0;
+ public bool Ms => (_opcode & 0x4000000000000) != 0;
+ public bool Cl => (_opcode & 0x40000000000000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int DestPred => (int)((_opcode >> 51) & 0x7);
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ }
+
+ struct InstTldB
+ {
+ private ulong _opcode;
+ public InstTldB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public bool Lod => (_opcode & 0x80000000000000) != 0;
+ public bool Toff => (_opcode & 0x800000000) != 0;
+ public bool Ms => (_opcode & 0x4000000000000) != 0;
+ public bool Cl => (_opcode & 0x40000000000000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int DestPred => (int)((_opcode >> 51) & 0x7);
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ }
+
+ struct InstTlds
+ {
+ private ulong _opcode;
+ public InstTlds(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public TldsTarget Target => (TldsTarget)((_opcode >> 53) & 0xF);
+ public int WMask => (int)((_opcode >> 50) & 0x7);
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int Dest2 => (int)((_opcode >> 28) & 0xFF);
+ }
+
+ struct InstTld4
+ {
+ private ulong _opcode;
+ public InstTld4(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Lc => (_opcode & 0x400000000000000) != 0;
+ public int DestPred => (int)((_opcode >> 51) & 0x7);
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public TexComp TexComp => (TexComp)((_opcode >> 56) & 0x3);
+ public TexOffset Toff => (TexOffset)((_opcode >> 54) & 0x3);
+ public bool Dc => (_opcode & 0x4000000000000) != 0;
+ public bool Ndv => (_opcode & 0x800000000) != 0;
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ }
+
+ struct InstTld4B
+ {
+ private ulong _opcode;
+ public InstTld4B(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Lc => (_opcode & 0x10000000000) != 0;
+ public int DestPred => (int)((_opcode >> 51) & 0x7);
+ public TexComp TexComp => (TexComp)((_opcode >> 38) & 0x3);
+ public TexOffset Toff => (TexOffset)((_opcode >> 36) & 0x3);
+ public bool Dc => (_opcode & 0x4000000000000) != 0;
+ public bool Ndv => (_opcode & 0x800000000) != 0;
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ }
+
+ struct InstTld4s
+ {
+ private ulong _opcode;
+ public InstTld4s(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public TexComp TexComp => (TexComp)((_opcode >> 52) & 0x3);
+ public bool Aoffi => (_opcode & 0x8000000000000) != 0;
+ public bool Dc => (_opcode & 0x4000000000000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int Dest2 => (int)((_opcode >> 28) & 0xFF);
+ }
+
+ struct InstTmml
+ {
+ private ulong _opcode;
+ public InstTmml(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public bool Ndv => (_opcode & 0x800000000) != 0;
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ }
+
+ struct InstTmmlB
+ {
+ private ulong _opcode;
+ public InstTmmlB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public bool Ndv => (_opcode & 0x800000000) != 0;
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ }
+
+ struct InstTxa
+ {
+ private ulong _opcode;
+ public InstTxa(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public bool Ndv => (_opcode & 0x800000000) != 0;
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ }
+
+ struct InstTxd
+ {
+ private ulong _opcode;
+ public InstTxd(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int DestPred => (int)((_opcode >> 51) & 0x7);
+ public bool Lc => (_opcode & 0x4000000000000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public bool Toff => (_opcode & 0x800000000) != 0;
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ }
+
+ struct InstTxdB
+ {
+ private ulong _opcode;
+ public InstTxdB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int DestPred => (int)((_opcode >> 51) & 0x7);
+ public bool Lc => (_opcode & 0x4000000000000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public bool Toff => (_opcode & 0x800000000) != 0;
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
+ }
+
+ struct InstTxq
+ {
+ private ulong _opcode;
+ public InstTxq(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int TidB => (int)((_opcode >> 36) & 0x1FFF);
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public TexQuery TexQuery => (TexQuery)((_opcode >> 22) & 0x3F);
+ }
+
+ struct InstTxqB
+ {
+ private ulong _opcode;
+ public InstTxqB(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool Nodep => (_opcode & 0x2000000000000) != 0;
+ public int WMask => (int)((_opcode >> 31) & 0xF);
+ public TexQuery TexQuery => (TexQuery)((_opcode >> 22) & 0x3F);
+ }
+
+ struct InstVabsdiff
+ {
+ private ulong _opcode;
+ public InstVabsdiff(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool DFormat => (_opcode & 0x40000000000000) != 0;
+ public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
+ public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
+ public bool Sat => (_opcode & 0x80000000000000) != 0;
+ public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
+ public bool BVideo => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstVabsdiff4
+ {
+ private ulong _opcode;
+ public InstVabsdiff4(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public VideoRed VRed => (VideoRed)((_opcode >> 53) & 0x3);
+ public LaneMask4 LaneMask4 => (LaneMask4)((int)((_opcode >> 49) & 0xC) | (int)((_opcode >> 36) & 0x3));
+ public bool Sat => (_opcode & 0x4000000000000) != 0;
+ public bool SrcBFmt => (_opcode & 0x2000000000000) != 0;
+ public bool SrcAFmt => (_opcode & 0x1000000000000) != 0;
+ public bool DFormat => (_opcode & 0x4000000000) != 0;
+ public ASelect4 Asel4 => (ASelect4)((_opcode >> 32) & 0xF);
+ public BSelect4 Bsel4 => (BSelect4)((_opcode >> 28) & 0xF);
+ }
+
+ struct InstVadd
+ {
+ private ulong _opcode;
+ public InstVadd(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 56) & 0x3);
+ public bool DFormat => (_opcode & 0x40000000000000) != 0;
+ public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
+ public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
+ public bool Sat => (_opcode & 0x80000000000000) != 0;
+ public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
+ public bool BVideo => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstVmad
+ {
+ private ulong _opcode;
+ public InstVmad(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
+ public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
+ public bool Sat => (_opcode & 0x80000000000000) != 0;
+ public AvgMode AvgMode => (AvgMode)((_opcode >> 53) & 0x3);
+ public VideoScale VideoScale => (VideoScale)((_opcode >> 51) & 0x3);
+ public bool BVideo => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstVmnmx
+ {
+ private ulong _opcode;
+ public InstVmnmx(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool DFormat => (_opcode & 0x40000000000000) != 0;
+ public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
+ public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
+ public bool Sat => (_opcode & 0x80000000000000) != 0;
+ public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
+ public bool Mn => (_opcode & 0x100000000000000) != 0;
+ public bool BVideo => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstVote
+ {
+ private ulong _opcode;
+ public InstVote(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public VoteMode VoteMode => (VoteMode)((_opcode >> 48) & 0x3);
+ public int VpDest => (int)((_opcode >> 45) & 0x7);
+ }
+
+ struct InstVotevtg
+ {
+ private ulong _opcode;
+ public InstVotevtg(ulong opcode) => _opcode = opcode;
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public VoteMode VoteMode => (VoteMode)((_opcode >> 48) & 0x3);
+ public int Imm28 => (int)((_opcode >> 20) & 0xFFFFFFF);
+ }
+
+ struct InstVset
+ {
+ private ulong _opcode;
+ public InstVset(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public IComp VComp => (IComp)((_opcode >> 54) & 0x7);
+ public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
+ public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
+ public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
+ public bool BVideo => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstVsetp
+ {
+ private ulong _opcode;
+ public InstVsetp(ulong opcode) => _opcode = opcode;
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
+ public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
+ public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
+ public IComp VComp => (IComp)((int)((_opcode >> 45) & 0x4) | (int)((_opcode >> 43) & 0x3));
+ public BoolOp BoolOp => (BoolOp)((_opcode >> 45) & 0x3);
+ public int SrcPred => (int)((_opcode >> 39) & 0x7);
+ public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
+ public int DestPred => (int)((_opcode >> 3) & 0x7);
+ public int DestPredInv => (int)((_opcode >> 0) & 0x7);
+ public bool BVideo => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstVshl
+ {
+ private ulong _opcode;
+ public InstVshl(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Mv => (_opcode & 0x2000000000000) != 0;
+ public bool DFormat => (_opcode & 0x40000000000000) != 0;
+ public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
+ public VectorSelect BSelect => (VectorSelect)((_opcode >> 28) & 0x7);
+ public bool Sat => (_opcode & 0x80000000000000) != 0;
+ public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
+ public bool BVideo => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstVshr
+ {
+ private ulong _opcode;
+ public InstVshr(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Mv => (_opcode & 0x2000000000000) != 0;
+ public bool DFormat => (_opcode & 0x40000000000000) != 0;
+ public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
+ public VectorSelect BSelect => (VectorSelect)((_opcode >> 28) & 0x7);
+ public bool Sat => (_opcode & 0x80000000000000) != 0;
+ public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
+ public bool BVideo => (_opcode & 0x4000000000000) != 0;
+ }
+
+ struct InstXmadR
+ {
+ private ulong _opcode;
+ public InstXmadR(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcB => (int)((_opcode >> 20) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool HiloA => (_opcode & 0x20000000000000) != 0;
+ public XmadCop XmadCop => (XmadCop)((_opcode >> 50) & 0x7);
+ public bool BSigned => (_opcode & 0x2000000000000) != 0;
+ public bool ASigned => (_opcode & 0x1000000000000) != 0;
+ public bool X => (_opcode & 0x4000000000) != 0;
+ public bool Mrg => (_opcode & 0x2000000000) != 0;
+ public bool Psl => (_opcode & 0x1000000000) != 0;
+ public bool HiloB => (_opcode & 0x800000000) != 0;
+ }
+
+ struct InstXmadI
+ {
+ private ulong _opcode;
+ public InstXmadI(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
+ public bool HiloA => (_opcode & 0x20000000000000) != 0;
+ public XmadCop XmadCop => (XmadCop)((_opcode >> 50) & 0x7);
+ public bool BSigned => (_opcode & 0x2000000000000) != 0;
+ public bool ASigned => (_opcode & 0x1000000000000) != 0;
+ public bool X => (_opcode & 0x4000000000) != 0;
+ public bool Mrg => (_opcode & 0x2000000000) != 0;
+ public bool Psl => (_opcode & 0x1000000000) != 0;
+ }
+
+ struct InstXmadC
+ {
+ private ulong _opcode;
+ public InstXmadC(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool Mrg => (_opcode & 0x100000000000000) != 0;
+ public bool Psl => (_opcode & 0x80000000000000) != 0;
+ public bool X => (_opcode & 0x40000000000000) != 0;
+ public bool HiloA => (_opcode & 0x20000000000000) != 0;
+ public bool HiloB => (_opcode & 0x10000000000000) != 0;
+ public XmadCop2 XmadCop => (XmadCop2)((_opcode >> 50) & 0x3);
+ public bool BSigned => (_opcode & 0x2000000000000) != 0;
+ public bool ASigned => (_opcode & 0x1000000000000) != 0;
+ }
+
+ struct InstXmadRc
+ {
+ private ulong _opcode;
+ public InstXmadRc(ulong opcode) => _opcode = opcode;
+ public int Dest => (int)((_opcode >> 0) & 0xFF);
+ public int SrcA => (int)((_opcode >> 8) & 0xFF);
+ public int SrcC => (int)((_opcode >> 39) & 0xFF);
+ public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
+ public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
+ public int Pred => (int)((_opcode >> 16) & 0x7);
+ public bool PredInv => (_opcode & 0x80000) != 0;
+ public bool WriteCC => (_opcode & 0x800000000000) != 0;
+ public bool X => (_opcode & 0x40000000000000) != 0;
+ public bool HiloA => (_opcode & 0x20000000000000) != 0;
+ public bool HiloB => (_opcode & 0x10000000000000) != 0;
+ public XmadCop2 XmadCop => (XmadCop2)((_opcode >> 50) & 0x3);
+ public bool BSigned => (_opcode & 0x2000000000000) != 0;
+ public bool ASigned => (_opcode & 0x1000000000000) != 0;
+ }
+} \ No newline at end of file