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 & 0x1F); } struct InstAl2p { private ulong _opcode; public InstAl2p(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 0x3); } struct InstCctltR { private ulong _opcode; public InstCctltR(ulong opcode) => _opcode = opcode; public int SrcC => (int)((_opcode >> 39) & 0xFF); public CctltOp CctltOp => (CctltOp)(_opcode & 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 & 0x1F); } struct InstCset { private ulong _opcode; public InstCset(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 0x3F); } struct InstDfmaR { private ulong _opcode; public InstDfmaR(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 0x1F); public bool KeepRefCnt => (_opcode & 0x20) != 0; } struct InstF2fR { private ulong _opcode; public InstF2fR(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 0xFF); } struct InstGetlmembase { private ulong _opcode; public InstGetlmembase(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 0xFF); } struct InstHadd2R { private ulong _opcode; public InstHadd2R(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 0x1F); } struct InstLd { private ulong _opcode; public InstLd(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 0x1F); } struct InstLopR { private ulong _opcode; public InstLopR(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 0x3); } struct InstMovR { private ulong _opcode; public InstMovR(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 0x1F); } struct InstRroR { private ulong _opcode; public InstRroR(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 0x1F); } struct InstTex { private ulong _opcode; public InstTex(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 0x7); public bool BVideo => (_opcode & 0x4000000000000) != 0; } struct InstVshl { private ulong _opcode; public InstVshl(ulong opcode) => _opcode = opcode; public int Dest => (int)(_opcode & 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 & 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 & 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 & 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 & 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 & 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; } }