a7109c767b
* Rewrite shader decoding stage * Fix P2R constant buffer encoding * Fix PSET/PSETP * PR feedback * Log unimplemented shader instructions * Implement NOP * Remove using * PR feedback
5362 lines
No EOL
215 KiB
C#
5362 lines
No EOL
215 KiB
C#
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,
|
|
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 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 CacheOp
|
|
{
|
|
Cg = 1,
|
|
Ci = 2,
|
|
Cv = 3,
|
|
}
|
|
|
|
enum LsSize
|
|
{
|
|
U8 = 0,
|
|
S8 = 1,
|
|
U16 = 2,
|
|
S16 = 3,
|
|
B32 = 4,
|
|
B64 = 5,
|
|
B128 = 6,
|
|
UB128 = 7,
|
|
}
|
|
|
|
enum LsSize2
|
|
{
|
|
U8 = 0,
|
|
S8 = 1,
|
|
U16 = 2,
|
|
S16 = 3,
|
|
B32 = 4,
|
|
B64 = 5,
|
|
B128 = 6,
|
|
}
|
|
|
|
enum AddressMode
|
|
{
|
|
Il = 1,
|
|
Is = 2,
|
|
Isl = 3,
|
|
}
|
|
|
|
enum CacheOp2
|
|
{
|
|
Lu = 1,
|
|
Ci = 2,
|
|
Cv = 3,
|
|
}
|
|
|
|
enum PredicateOp
|
|
{
|
|
F = 0,
|
|
T = 1,
|
|
Z = 2,
|
|
Nz = 3,
|
|
}
|
|
|
|
enum LogicOp
|
|
{
|
|
And = 0,
|
|
Or = 1,
|
|
Xor = 2,
|
|
PassB = 3,
|
|
}
|
|
|
|
enum Membar
|
|
{
|
|
Cta = 0,
|
|
Gl = 1,
|
|
Sys = 2,
|
|
Vc = 3,
|
|
}
|
|
|
|
enum Ivall
|
|
{
|
|
Ivalld = 1,
|
|
Ivallt = 2,
|
|
Ivalltd = 3,
|
|
}
|
|
|
|
enum MufuOp
|
|
{
|
|
Cos = 0,
|
|
Sin = 1,
|
|
Ex2 = 2,
|
|
Lg2 = 3,
|
|
Rcp = 4,
|
|
Rsq = 5,
|
|
Rcp64h = 6,
|
|
Rsq64h = 7,
|
|
Sqrt = 8,
|
|
}
|
|
|
|
enum OutType
|
|
{
|
|
Emit = 1,
|
|
Cut = 2,
|
|
EmitThenCut = 3,
|
|
}
|
|
|
|
enum PixMode
|
|
{
|
|
Covmask = 1,
|
|
Covered = 2,
|
|
Offset = 3,
|
|
CentroidOffset = 4,
|
|
MyIndex = 5,
|
|
}
|
|
|
|
enum PMode
|
|
{
|
|
F4e = 1,
|
|
B4e = 2,
|
|
Rc8 = 3,
|
|
Ecl = 4,
|
|
Ecr = 5,
|
|
Rc16 = 6,
|
|
}
|
|
|
|
enum RedOp
|
|
{
|
|
Add = 0,
|
|
Min = 1,
|
|
Max = 2,
|
|
Inc = 3,
|
|
Dec = 4,
|
|
And = 5,
|
|
Or = 6,
|
|
Xor = 7,
|
|
}
|
|
|
|
enum XModeShf
|
|
{
|
|
Hi = 1,
|
|
X = 2,
|
|
Xhi = 3,
|
|
}
|
|
|
|
enum MaxShift
|
|
{
|
|
U64 = 2,
|
|
S64 = 3,
|
|
}
|
|
|
|
enum ShflMode
|
|
{
|
|
Idx = 0,
|
|
Up = 1,
|
|
Down = 2,
|
|
Bfly = 3,
|
|
}
|
|
|
|
enum Clamp
|
|
{
|
|
Ign = 0,
|
|
Trap = 2,
|
|
}
|
|
|
|
enum SuatomSize
|
|
{
|
|
U32 = 0,
|
|
S32 = 1,
|
|
U64 = 2,
|
|
F32FtzRn = 3,
|
|
F16x2FtzRn = 4,
|
|
S64 = 5,
|
|
Sd32 = 6,
|
|
Sd64 = 7,
|
|
}
|
|
|
|
enum SuDim
|
|
{
|
|
_1d = 0,
|
|
_1dBuffer = 1,
|
|
_1dArray = 2,
|
|
_2d = 3,
|
|
_2dArray = 4,
|
|
_3d = 5,
|
|
}
|
|
|
|
enum SuatomOp
|
|
{
|
|
Add = 0,
|
|
Min = 1,
|
|
Max = 2,
|
|
Inc = 3,
|
|
Dec = 4,
|
|
And = 5,
|
|
Or = 6,
|
|
Xor = 7,
|
|
Exch = 8,
|
|
}
|
|
|
|
enum SuSize
|
|
{
|
|
U8 = 0,
|
|
S8 = 1,
|
|
U16 = 2,
|
|
S16 = 3,
|
|
B32 = 4,
|
|
B64 = 5,
|
|
B128 = 6,
|
|
UB128 = 7,
|
|
}
|
|
|
|
enum SuRgba
|
|
{
|
|
R = 1,
|
|
G = 2,
|
|
Rg = 3,
|
|
B = 4,
|
|
Rb = 5,
|
|
Gb = 6,
|
|
Rgb = 7,
|
|
A = 8,
|
|
Ra = 9,
|
|
Ga = 10,
|
|
Rga = 11,
|
|
Ba = 12,
|
|
Rba = 13,
|
|
Gba = 14,
|
|
Rgba = 15,
|
|
}
|
|
|
|
enum Lod
|
|
{
|
|
Lz = 1,
|
|
Lb = 2,
|
|
Ll = 3,
|
|
Lba = 6,
|
|
Lla = 7,
|
|
}
|
|
|
|
enum TexDim
|
|
{
|
|
_1d = 0,
|
|
Array1d = 1,
|
|
_2d = 2,
|
|
Array2d = 3,
|
|
_3d = 4,
|
|
Array3d = 5,
|
|
Cube = 6,
|
|
ArrayCube = 7,
|
|
}
|
|
|
|
enum TexsTarget
|
|
{
|
|
Texture1DLodZero = 0,
|
|
Texture2D = 1,
|
|
Texture2DLodZero = 2,
|
|
Texture2DLodLevel = 3,
|
|
Texture2DDepthCompare = 4,
|
|
Texture2DLodLevelDepthCompare = 5,
|
|
Texture2DLodZeroDepthCompare = 6,
|
|
Texture2DArray = 7,
|
|
Texture2DArrayLodZero = 8,
|
|
Texture2DArrayLodZeroDepthCompare = 9,
|
|
Texture3D = 10,
|
|
Texture3DLodZero = 11,
|
|
TextureCube = 12,
|
|
TextureCubeLodLevel = 13,
|
|
}
|
|
|
|
enum TldsTarget
|
|
{
|
|
Texture1DLodZero = 0x0,
|
|
Texture1DLodLevel = 0x1,
|
|
Texture2DLodZero = 0x2,
|
|
Texture2DLodZeroOffset = 0x4,
|
|
Texture2DLodLevel = 0x5,
|
|
Texture2DLodZeroMultisample = 0x6,
|
|
Texture3DLodZero = 0x7,
|
|
Texture2DArrayLodZero = 0x8,
|
|
Texture2DLodLevelOffset = 0xc
|
|
}
|
|
|
|
enum TexComp
|
|
{
|
|
R = 0,
|
|
G = 1,
|
|
B = 2,
|
|
A = 3,
|
|
}
|
|
|
|
enum TexOffset
|
|
{
|
|
None = 0,
|
|
Aoffi = 1,
|
|
Ptp = 2,
|
|
}
|
|
|
|
enum TexQuery
|
|
{
|
|
TexHeaderDimension = 1,
|
|
TexHeaderTextureType = 2,
|
|
TexHeaderSamplerPos = 5,
|
|
TexSamplerFilter = 16,
|
|
TexSamplerLod = 18,
|
|
TexSamplerWrap = 20,
|
|
TexSamplerBorderColor = 22,
|
|
}
|
|
|
|
enum VectorSelect
|
|
{
|
|
U8B0 = 0,
|
|
U8B1 = 1,
|
|
U8B2 = 2,
|
|
U8B3 = 3,
|
|
U16H0 = 4,
|
|
U16H1 = 5,
|
|
U32 = 6,
|
|
S8B0 = 8,
|
|
S8B1 = 9,
|
|
S8B2 = 10,
|
|
S8B3 = 11,
|
|
S16H0 = 12,
|
|
S16H1 = 13,
|
|
S32 = 14,
|
|
}
|
|
|
|
enum VideoOp
|
|
{
|
|
Mrg16h = 0,
|
|
Mrg16l = 1,
|
|
Mrg8b0 = 2,
|
|
Mrg8b2 = 3,
|
|
Acc = 4,
|
|
Min = 5,
|
|
Max = 6,
|
|
}
|
|
|
|
enum VideoRed
|
|
{
|
|
Acc = 1,
|
|
}
|
|
|
|
enum LaneMask4
|
|
{
|
|
Z = 1,
|
|
W = 2,
|
|
Zw = 3,
|
|
X = 4,
|
|
Xz = 5,
|
|
Xw = 6,
|
|
Xzw = 7,
|
|
Y = 8,
|
|
Yz = 9,
|
|
Yw = 10,
|
|
Yzw = 11,
|
|
Xy = 12,
|
|
Xyz = 13,
|
|
Xyw = 14,
|
|
Xyzw = 15,
|
|
}
|
|
|
|
enum ASelect4
|
|
{
|
|
_0000 = 0,
|
|
_1111 = 1,
|
|
_2222 = 2,
|
|
_3333 = 3,
|
|
_3210 = 4,
|
|
_5432 = 6,
|
|
_6543 = 7,
|
|
_3201 = 8,
|
|
_3012 = 9,
|
|
_0213 = 10,
|
|
_3120 = 11,
|
|
_1230 = 12,
|
|
_2310 = 13,
|
|
}
|
|
|
|
enum BSelect4
|
|
{
|
|
_4444 = 0,
|
|
_5555 = 1,
|
|
_6666 = 2,
|
|
_7777 = 3,
|
|
_7654 = 4,
|
|
_5432 = 6,
|
|
_4321 = 7,
|
|
_4567 = 8,
|
|
_6745 = 9,
|
|
_5476 = 10,
|
|
}
|
|
|
|
enum VideoScale
|
|
{
|
|
Shr7 = 1,
|
|
Shr15 = 2,
|
|
}
|
|
|
|
enum VoteMode
|
|
{
|
|
All = 0,
|
|
Any = 1,
|
|
Eq = 2,
|
|
}
|
|
|
|
enum XmadCop
|
|
{
|
|
Cfull = 0,
|
|
Clo = 1,
|
|
Chi = 2,
|
|
Csfu = 3,
|
|
Cbcc = 4,
|
|
}
|
|
|
|
enum XmadCop2
|
|
{
|
|
Cfull = 0,
|
|
Clo = 1,
|
|
Chi = 2,
|
|
Csfu = 3,
|
|
}
|
|
|
|
enum ImadspASelect
|
|
{
|
|
U32 = 0,
|
|
S32 = 1,
|
|
U24 = 2,
|
|
S24 = 3,
|
|
U16h0 = 4,
|
|
S16h0 = 5,
|
|
U16h1 = 6,
|
|
S16h1 = 7,
|
|
}
|
|
|
|
enum ImadspBSelect
|
|
{
|
|
U24 = 0,
|
|
S24 = 1,
|
|
U16h0 = 2,
|
|
S16h0 = 3,
|
|
}
|
|
|
|
struct InstConditional
|
|
{
|
|
private ulong _opcode;
|
|
public InstConditional(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
}
|
|
|
|
struct InstAl2p
|
|
{
|
|
private ulong _opcode;
|
|
public InstAl2p(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
|
|
public bool Aio => (_opcode & 0x100000000) != 0;
|
|
public int Imm11 => (int)((_opcode >> 20) & 0x7FF);
|
|
public int DestPred => (int)((_opcode >> 44) & 0x7);
|
|
}
|
|
|
|
struct InstAld
|
|
{
|
|
private ulong _opcode;
|
|
public InstAld(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm11 => (int)((_opcode >> 20) & 0x7FF);
|
|
public bool P => (_opcode & 0x80000000) != 0;
|
|
public bool O => (_opcode & 0x100000000) != 0;
|
|
public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
|
|
public bool Phys => !P && Imm11 == 0 && SrcA != RegisterConsts.RegisterZeroIndex;
|
|
}
|
|
|
|
struct InstAst
|
|
{
|
|
private ulong _opcode;
|
|
public InstAst(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm11 => (int)((_opcode >> 20) & 0x7FF);
|
|
public bool P => (_opcode & 0x80000000) != 0;
|
|
public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
|
|
public bool Phys => !P && Imm11 == 0 && SrcA != RegisterConsts.RegisterZeroIndex;
|
|
}
|
|
|
|
struct InstAtom
|
|
{
|
|
private ulong _opcode;
|
|
public InstAtom(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm20 => (int)((_opcode >> 28) & 0xFFFFF);
|
|
public AtomSize Size => (AtomSize)((_opcode >> 49) & 0x7);
|
|
public AtomOp Op => (AtomOp)((_opcode >> 52) & 0xF);
|
|
public bool E => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstAtomCas
|
|
{
|
|
private ulong _opcode;
|
|
public InstAtomCas(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int BcRz => (int)((_opcode >> 50) & 0x3);
|
|
public bool E => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstAtoms
|
|
{
|
|
private ulong _opcode;
|
|
public InstAtoms(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm22 => (int)((_opcode >> 30) & 0x3FFFFF);
|
|
public AtomsSize AtomsSize => (AtomsSize)((_opcode >> 28) & 0x3);
|
|
public AtomOp AtomOp => (AtomOp)((_opcode >> 52) & 0xF);
|
|
}
|
|
|
|
struct InstAtomsCas
|
|
{
|
|
private ulong _opcode;
|
|
public InstAtomsCas(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int AtomsBcRz => (int)((_opcode >> 28) & 0x3);
|
|
}
|
|
|
|
struct InstB2r
|
|
{
|
|
private ulong _opcode;
|
|
public InstB2r(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int DestPred => (int)((_opcode >> 45) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public BarMode Mode => (BarMode)((_opcode >> 32) & 0x3);
|
|
}
|
|
|
|
struct InstBar
|
|
{
|
|
private ulong _opcode;
|
|
public InstBar(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm12 => (int)((_opcode >> 20) & 0xFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public BarOp BarOp => (BarOp)((_opcode >> 32) & 0x7);
|
|
public BarRedOp BarRedOp => (BarRedOp)((_opcode >> 35) & 0x3);
|
|
public bool AFixBar => (_opcode & 0x100000000000) != 0;
|
|
public bool BFixBar => (_opcode & 0x80000000000) != 0;
|
|
}
|
|
|
|
struct InstBfeR
|
|
{
|
|
private ulong _opcode;
|
|
public InstBfeR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public bool Brev => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstBfeI
|
|
{
|
|
private ulong _opcode;
|
|
public InstBfeI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public bool Brev => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstBfeC
|
|
{
|
|
private ulong _opcode;
|
|
public InstBfeC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public bool Brev => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstBfiR
|
|
{
|
|
private ulong _opcode;
|
|
public InstBfiR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstBfiI
|
|
{
|
|
private ulong _opcode;
|
|
public InstBfiI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstBfiC
|
|
{
|
|
private ulong _opcode;
|
|
public InstBfiC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstBfiRc
|
|
{
|
|
private ulong _opcode;
|
|
public InstBfiRc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstBpt
|
|
{
|
|
private ulong _opcode;
|
|
public InstBpt(ulong opcode) => _opcode = opcode;
|
|
public int Imm20 => (int)((_opcode >> 20) & 0xFFFFF);
|
|
public Bpt Bpt => (Bpt)((_opcode >> 6) & 0x7);
|
|
}
|
|
|
|
struct InstBra
|
|
{
|
|
private ulong _opcode;
|
|
public InstBra(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
public bool Lmt => (_opcode & 0x40) != 0;
|
|
public bool U => (_opcode & 0x80) != 0;
|
|
}
|
|
|
|
struct InstBrk
|
|
{
|
|
private ulong _opcode;
|
|
public InstBrk(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
}
|
|
|
|
struct InstBrx
|
|
{
|
|
private ulong _opcode;
|
|
public InstBrx(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
public bool Lmt => (_opcode & 0x40) != 0;
|
|
}
|
|
|
|
struct InstCal
|
|
{
|
|
private ulong _opcode;
|
|
public InstCal(ulong opcode) => _opcode = opcode;
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
public bool Inc => (_opcode & 0x40) != 0;
|
|
}
|
|
|
|
struct InstCctl
|
|
{
|
|
private ulong _opcode;
|
|
public InstCctl(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm30 => (int)((_opcode >> 22) & 0x3FFFFFFF);
|
|
public bool E => (_opcode & 0x10000000000000) != 0;
|
|
public CacheType Cache => (CacheType)((_opcode >> 4) & 0x7);
|
|
public CctlOp CctlOp => (CctlOp)((_opcode >> 0) & 0xF);
|
|
}
|
|
|
|
struct InstCctll
|
|
{
|
|
private ulong _opcode;
|
|
public InstCctll(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm22 => (int)((_opcode >> 22) & 0x3FFFFF);
|
|
public int Cache => (int)((_opcode >> 4) & 0x3);
|
|
public CctlOp CctlOp => (CctlOp)((_opcode >> 0) & 0xF);
|
|
}
|
|
|
|
struct InstCctlt
|
|
{
|
|
private ulong _opcode;
|
|
public InstCctlt(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int TsIdx13 => (int)((_opcode >> 36) & 0x1FFF);
|
|
public CctltOp CctltOp => (CctltOp)((_opcode >> 0) & 0x3);
|
|
}
|
|
|
|
struct InstCctltR
|
|
{
|
|
private ulong _opcode;
|
|
public InstCctltR(ulong opcode) => _opcode = opcode;
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public CctltOp CctltOp => (CctltOp)((_opcode >> 0) & 0x3);
|
|
}
|
|
|
|
struct InstContUnsup
|
|
{
|
|
private ulong _opcode;
|
|
public InstContUnsup(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
}
|
|
|
|
struct InstCsetUnsup
|
|
{
|
|
private ulong _opcode;
|
|
public InstCsetUnsup(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public bool BVal => (_opcode & 0x100000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
}
|
|
|
|
struct InstCsetp
|
|
{
|
|
private ulong _opcode;
|
|
public InstCsetp(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
}
|
|
|
|
struct InstCs2r
|
|
{
|
|
private ulong _opcode;
|
|
public InstCs2r(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public SReg SReg => (SReg)((_opcode >> 20) & 0xFF);
|
|
}
|
|
|
|
struct InstDaddR
|
|
{
|
|
private ulong _opcode;
|
|
public InstDaddR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstDaddI
|
|
{
|
|
private ulong _opcode;
|
|
public InstDaddI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstDaddC
|
|
{
|
|
private ulong _opcode;
|
|
public InstDaddC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstDepbar
|
|
{
|
|
private ulong _opcode;
|
|
public InstDepbar(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Le => (_opcode & 0x20000000) != 0;
|
|
public int Sbid => (int)((_opcode >> 26) & 0x7);
|
|
public int PendCnt => (int)((_opcode >> 20) & 0x3F);
|
|
public int Imm6 => (int)((_opcode >> 0) & 0x3F);
|
|
}
|
|
|
|
struct InstDfmaR
|
|
{
|
|
private ulong _opcode;
|
|
public InstDfmaR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstDfmaI
|
|
{
|
|
private ulong _opcode;
|
|
public InstDfmaI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstDfmaC
|
|
{
|
|
private ulong _opcode;
|
|
public InstDfmaC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstDfmaRc
|
|
{
|
|
private ulong _opcode;
|
|
public InstDfmaRc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstDmnmxR
|
|
{
|
|
private ulong _opcode;
|
|
public InstDmnmxR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstDmnmxI
|
|
{
|
|
private ulong _opcode;
|
|
public InstDmnmxI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstDmnmxC
|
|
{
|
|
private ulong _opcode;
|
|
public InstDmnmxC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstDmulR
|
|
{
|
|
private ulong _opcode;
|
|
public InstDmulR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstDmulI
|
|
{
|
|
private ulong _opcode;
|
|
public InstDmulI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstDmulC
|
|
{
|
|
private ulong _opcode;
|
|
public InstDmulC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstDsetR
|
|
{
|
|
private ulong _opcode;
|
|
public InstDsetR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x40000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x20000000000000) != 0;
|
|
public bool BVal => (_opcode & 0x10000000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstDsetI
|
|
{
|
|
private ulong _opcode;
|
|
public InstDsetI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x40000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x20000000000000) != 0;
|
|
public bool BVal => (_opcode & 0x10000000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstDsetC
|
|
{
|
|
private ulong _opcode;
|
|
public InstDsetC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x40000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x20000000000000) != 0;
|
|
public bool BVal => (_opcode & 0x10000000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstDsetpR
|
|
{
|
|
private ulong _opcode;
|
|
public InstDsetpR(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool AbsA => (_opcode & 0x80) != 0;
|
|
public bool NegB => (_opcode & 0x40) != 0;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
}
|
|
|
|
struct InstDsetpI
|
|
{
|
|
private ulong _opcode;
|
|
public InstDsetpI(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool AbsA => (_opcode & 0x80) != 0;
|
|
public bool NegB => (_opcode & 0x40) != 0;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
}
|
|
|
|
struct InstDsetpC
|
|
{
|
|
private ulong _opcode;
|
|
public InstDsetpC(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool AbsA => (_opcode & 0x80) != 0;
|
|
public bool NegB => (_opcode & 0x40) != 0;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
}
|
|
|
|
struct InstExit
|
|
{
|
|
private ulong _opcode;
|
|
public InstExit(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
public bool KeepRefCnt => (_opcode & 0x20) != 0;
|
|
}
|
|
|
|
struct InstF2fR
|
|
{
|
|
private ulong _opcode;
|
|
public InstF2fR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
|
|
public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
|
|
public IntegerRound RoundMode => (IntegerRound)((int)((_opcode >> 40) & 0x4) | (int)((_opcode >> 39) & 0x3));
|
|
public bool Sh => (_opcode & 0x20000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstF2fI
|
|
{
|
|
private ulong _opcode;
|
|
public InstF2fI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
|
|
public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
|
|
public IntegerRound RoundMode => (IntegerRound)((int)((_opcode >> 40) & 0x4) | (int)((_opcode >> 39) & 0x3));
|
|
public bool Sh => (_opcode & 0x20000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstF2fC
|
|
{
|
|
private ulong _opcode;
|
|
public InstF2fC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
|
|
public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
|
|
public IntegerRound RoundMode => (IntegerRound)((int)((_opcode >> 40) & 0x4) | (int)((_opcode >> 39) & 0x3));
|
|
public bool Sh => (_opcode & 0x20000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstF2iR
|
|
{
|
|
private ulong _opcode;
|
|
public InstF2iR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public bool Sh => (_opcode & 0x20000000000) != 0;
|
|
public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
|
|
public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
|
|
public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstF2iI
|
|
{
|
|
private ulong _opcode;
|
|
public InstF2iI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public bool Sh => (_opcode & 0x20000000000) != 0;
|
|
public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
|
|
public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
|
|
public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstF2iC
|
|
{
|
|
private ulong _opcode;
|
|
public InstF2iC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public bool Sh => (_opcode & 0x20000000000) != 0;
|
|
public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
|
|
public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
|
|
public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstFaddR
|
|
{
|
|
private ulong _opcode;
|
|
public InstFaddR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstFaddI
|
|
{
|
|
private ulong _opcode;
|
|
public InstFaddI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstFaddC
|
|
{
|
|
private ulong _opcode;
|
|
public InstFaddC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstFadd32i
|
|
{
|
|
private ulong _opcode;
|
|
public InstFadd32i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public bool AbsB => (_opcode & 0x200000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x100000000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x80000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x40000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x20000000000000) != 0;
|
|
}
|
|
|
|
struct InstFchkR
|
|
{
|
|
private ulong _opcode;
|
|
public InstFchkR(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
|
|
}
|
|
|
|
struct InstFchkI
|
|
{
|
|
private ulong _opcode;
|
|
public InstFchkI(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
|
|
}
|
|
|
|
struct InstFchkC
|
|
{
|
|
private ulong _opcode;
|
|
public InstFchkC(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
|
|
}
|
|
|
|
struct InstFcmpR
|
|
{
|
|
private ulong _opcode;
|
|
public InstFcmpR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public bool Ftz => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstFcmpI
|
|
{
|
|
private ulong _opcode;
|
|
public InstFcmpI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public bool Ftz => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstFcmpC
|
|
{
|
|
private ulong _opcode;
|
|
public InstFcmpC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public bool Ftz => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstFcmpRc
|
|
{
|
|
private ulong _opcode;
|
|
public InstFcmpRc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public bool Ftz => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstFfmaR
|
|
{
|
|
private ulong _opcode;
|
|
public InstFfmaR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
|
|
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
|
|
}
|
|
|
|
struct InstFfmaI
|
|
{
|
|
private ulong _opcode;
|
|
public InstFfmaI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
|
|
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
|
|
}
|
|
|
|
struct InstFfmaC
|
|
{
|
|
private ulong _opcode;
|
|
public InstFfmaC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
|
|
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
|
|
}
|
|
|
|
struct InstFfmaRc
|
|
{
|
|
private ulong _opcode;
|
|
public InstFfmaRc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
|
|
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
|
|
}
|
|
|
|
struct InstFfma32i
|
|
{
|
|
private ulong _opcode;
|
|
public InstFfma32i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegC => (_opcode & 0x200000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x100000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x80000000000000) != 0;
|
|
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
|
|
}
|
|
|
|
struct InstFloR
|
|
{
|
|
private ulong _opcode;
|
|
public InstFloR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public bool Sh => (_opcode & 0x20000000000) != 0;
|
|
public bool NegB => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstFloI
|
|
{
|
|
private ulong _opcode;
|
|
public InstFloI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public bool Sh => (_opcode & 0x20000000000) != 0;
|
|
public bool NegB => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstFloC
|
|
{
|
|
private ulong _opcode;
|
|
public InstFloC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public bool Sh => (_opcode & 0x20000000000) != 0;
|
|
public bool NegB => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstFmnmxR
|
|
{
|
|
private ulong _opcode;
|
|
public InstFmnmxR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstFmnmxI
|
|
{
|
|
private ulong _opcode;
|
|
public InstFmnmxI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstFmnmxC
|
|
{
|
|
private ulong _opcode;
|
|
public InstFmnmxC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstFmulR
|
|
{
|
|
private ulong _opcode;
|
|
public InstFmulR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public Fmz Fmz => (Fmz)((_opcode >> 44) & 0x3);
|
|
public MultiplyScale Scale => (MultiplyScale)((_opcode >> 41) & 0x7);
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstFmulI
|
|
{
|
|
private ulong _opcode;
|
|
public InstFmulI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public Fmz Fmz => (Fmz)((_opcode >> 44) & 0x3);
|
|
public MultiplyScale Scale => (MultiplyScale)((_opcode >> 41) & 0x7);
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstFmulC
|
|
{
|
|
private ulong _opcode;
|
|
public InstFmulC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public Fmz Fmz => (Fmz)((_opcode >> 44) & 0x3);
|
|
public MultiplyScale Scale => (MultiplyScale)((_opcode >> 41) & 0x7);
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstFmul32i
|
|
{
|
|
private ulong _opcode;
|
|
public InstFmul32i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public bool Sat => (_opcode & 0x80000000000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
|
|
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
|
|
}
|
|
|
|
struct InstFsetR
|
|
{
|
|
private ulong _opcode;
|
|
public InstFsetR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x20000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x40000000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool Ftz => (_opcode & 0x80000000000000) != 0;
|
|
public bool BVal => (_opcode & 0x10000000000000) != 0;
|
|
}
|
|
|
|
struct InstFsetC
|
|
{
|
|
private ulong _opcode;
|
|
public InstFsetC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x20000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x40000000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool Ftz => (_opcode & 0x80000000000000) != 0;
|
|
public bool BVal => (_opcode & 0x10000000000000) != 0;
|
|
}
|
|
|
|
struct InstFsetI
|
|
{
|
|
private ulong _opcode;
|
|
public InstFsetI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x20000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x40000000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool Ftz => (_opcode & 0x80000000000000) != 0;
|
|
public bool BVal => (_opcode & 0x10000000000000) != 0;
|
|
}
|
|
|
|
struct InstFsetpR
|
|
{
|
|
private ulong _opcode;
|
|
public InstFsetpR(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x40) != 0;
|
|
public bool AbsA => (_opcode & 0x80) != 0;
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool Ftz => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstFsetpI
|
|
{
|
|
private ulong _opcode;
|
|
public InstFsetpI(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x40) != 0;
|
|
public bool AbsA => (_opcode & 0x80) != 0;
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool Ftz => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstFsetpC
|
|
{
|
|
private ulong _opcode;
|
|
public InstFsetpC(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x40) != 0;
|
|
public bool AbsA => (_opcode & 0x80) != 0;
|
|
public bool AbsB => (_opcode & 0x100000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool Ftz => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstFswzadd
|
|
{
|
|
private ulong _opcode;
|
|
public InstFswzadd(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x100000000000) != 0;
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public bool Ndv => (_opcode & 0x4000000000) != 0;
|
|
public int PnWord => (int)((_opcode >> 28) & 0xFF);
|
|
}
|
|
|
|
struct InstGetcrsptr
|
|
{
|
|
private ulong _opcode;
|
|
public InstGetcrsptr(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
}
|
|
|
|
struct InstGetlmembase
|
|
{
|
|
private ulong _opcode;
|
|
public InstGetlmembase(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
}
|
|
|
|
struct InstHadd2R
|
|
{
|
|
private ulong _opcode;
|
|
public InstHadd2R(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x80000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x40000000) != 0;
|
|
public bool Sat => (_opcode & 0x100000000) != 0;
|
|
public bool Ftz => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstHadd2I
|
|
{
|
|
private ulong _opcode;
|
|
public InstHadd2I(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
|
|
public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool Sat => (_opcode & 0x10000000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstHadd2C
|
|
{
|
|
private ulong _opcode;
|
|
public InstHadd2C(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x100000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x40000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x10000000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstHadd232i
|
|
{
|
|
private ulong _opcode;
|
|
public InstHadd232i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm => (int)(_opcode >> 20);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x100000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x10000000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x80000000000000) != 0;
|
|
}
|
|
|
|
struct InstHfma2R
|
|
{
|
|
private ulong _opcode;
|
|
public InstHfma2R(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
|
|
public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 35) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000) != 0;
|
|
public bool NegC => (_opcode & 0x40000000) != 0;
|
|
public bool Sat => (_opcode & 0x100000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 37) & 0x3);
|
|
}
|
|
|
|
struct InstHfma2I
|
|
{
|
|
private ulong _opcode;
|
|
public InstHfma2I(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
|
|
public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegC => (_opcode & 0x8000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x10000000000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
|
|
}
|
|
|
|
struct InstHfma2C
|
|
{
|
|
private ulong _opcode;
|
|
public InstHfma2C(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x100000000000000) != 0;
|
|
public bool NegC => (_opcode & 0x8000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x10000000000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
|
|
}
|
|
|
|
struct InstHfma2Rc
|
|
{
|
|
private ulong _opcode;
|
|
public InstHfma2Rc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x100000000000000) != 0;
|
|
public bool NegC => (_opcode & 0x8000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x10000000000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
|
|
}
|
|
|
|
struct InstHfma232i
|
|
{
|
|
private ulong _opcode;
|
|
public InstHfma232i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm => (int)(_opcode >> 20);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegC => (_opcode & 0x8000000000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
|
|
}
|
|
|
|
struct InstHmul2R
|
|
{
|
|
private ulong _opcode;
|
|
public InstHmul2R(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x40000000) != 0;
|
|
public bool Sat => (_opcode & 0x100000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstHmul2I
|
|
{
|
|
private ulong _opcode;
|
|
public InstHmul2I(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
|
|
public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool Sat => (_opcode & 0x10000000000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstHmul2C
|
|
{
|
|
private ulong _opcode;
|
|
public InstHmul2C(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x40000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x10000000000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstHmul232i
|
|
{
|
|
private ulong _opcode;
|
|
public InstHmul232i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Sat => (_opcode & 0x10000000000000) != 0;
|
|
public Fmz Fmz => (Fmz)((_opcode >> 55) & 0x3);
|
|
}
|
|
|
|
struct InstHset2R
|
|
{
|
|
private ulong _opcode;
|
|
public InstHset2R(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool NegB => (_opcode & 0x80000000) != 0;
|
|
public bool AbsB => (_opcode & 0x40000000) != 0;
|
|
public bool Bval => (_opcode & 0x2000000000000) != 0;
|
|
public FComp Cmp => (FComp)((_opcode >> 35) & 0xF);
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstHset2I
|
|
{
|
|
private ulong _opcode;
|
|
public InstHset2I(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
|
|
public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool Bval => (_opcode & 0x20000000000000) != 0;
|
|
public FComp Cmp => (FComp)((_opcode >> 49) & 0xF);
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x40000000000000) != 0;
|
|
}
|
|
|
|
struct InstHset2C
|
|
{
|
|
private ulong _opcode;
|
|
public InstHset2C(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool NegB => (_opcode & 0x100000000000000) != 0;
|
|
public bool Bval => (_opcode & 0x20000000000000) != 0;
|
|
public FComp Cmp => (FComp)((_opcode >> 49) & 0xF);
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public bool Ftz => (_opcode & 0x40000000000000) != 0;
|
|
}
|
|
|
|
struct InstHsetp2R
|
|
{
|
|
private ulong _opcode;
|
|
public InstHsetp2R(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x80000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x40000000) != 0;
|
|
public FComp FComp2 => (FComp)((_opcode >> 35) & 0xF);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool Ftz => (_opcode & 0x40) != 0;
|
|
public bool HAnd => (_opcode & 0x2000000000000) != 0;
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
|
|
}
|
|
|
|
struct InstHsetp2I
|
|
{
|
|
private ulong _opcode;
|
|
public InstHsetp2I(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
|
|
public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 49) & 0xF);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool Ftz => (_opcode & 0x40) != 0;
|
|
public bool HAnd => (_opcode & 0x20000000000000) != 0;
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
}
|
|
|
|
struct InstHsetp2C
|
|
{
|
|
private ulong _opcode;
|
|
public InstHsetp2C(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegA => (_opcode & 0x80000000000) != 0;
|
|
public bool NegB => (_opcode & 0x100000000000000) != 0;
|
|
public bool AbsA => (_opcode & 0x100000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x40000000000000) != 0;
|
|
public FComp FComp => (FComp)((_opcode >> 49) & 0xF);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool Ftz => (_opcode & 0x40) != 0;
|
|
public bool HAnd => (_opcode & 0x20000000000000) != 0;
|
|
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
|
|
}
|
|
|
|
struct InstI2fR
|
|
{
|
|
private ulong _opcode;
|
|
public InstI2fR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public ISrcFmt ISrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
|
|
public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
|
|
}
|
|
|
|
struct InstI2fI
|
|
{
|
|
private ulong _opcode;
|
|
public InstI2fI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public ISrcFmt ISrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
|
|
public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
|
|
}
|
|
|
|
struct InstI2fC
|
|
{
|
|
private ulong _opcode;
|
|
public InstI2fC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
|
|
public ISrcFmt ISrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
|
|
public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
|
|
}
|
|
|
|
struct InstI2iR
|
|
{
|
|
private ulong _opcode;
|
|
public InstI2iR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
|
|
public ISrcFmt SrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
|
|
}
|
|
|
|
struct InstI2iI
|
|
{
|
|
private ulong _opcode;
|
|
public InstI2iI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
|
|
public ISrcFmt SrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
|
|
}
|
|
|
|
struct InstI2iC
|
|
{
|
|
private ulong _opcode;
|
|
public InstI2iC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
|
|
public ISrcFmt SrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
|
|
}
|
|
|
|
struct InstIaddR
|
|
{
|
|
private ulong _opcode;
|
|
public InstIaddR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
}
|
|
|
|
struct InstIaddI
|
|
{
|
|
private ulong _opcode;
|
|
public InstIaddI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
}
|
|
|
|
struct InstIaddC
|
|
{
|
|
private ulong _opcode;
|
|
public InstIaddC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
}
|
|
|
|
struct InstIadd32i
|
|
{
|
|
private ulong _opcode;
|
|
public InstIadd32i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 55) & 0x3);
|
|
public bool Sat => (_opcode & 0x40000000000000) != 0;
|
|
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
|
|
public bool X => (_opcode & 0x20000000000000) != 0;
|
|
}
|
|
|
|
struct InstIadd3R
|
|
{
|
|
private ulong _opcode;
|
|
public InstIadd3R(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x8000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x4000000000000) != 0;
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool X => (_opcode & 0x1000000000000) != 0;
|
|
public Lrs Lrs => (Lrs)((_opcode >> 37) & 0x3);
|
|
public HalfSelect Apart => (HalfSelect)((_opcode >> 35) & 0x3);
|
|
public HalfSelect Bpart => (HalfSelect)((_opcode >> 33) & 0x3);
|
|
public HalfSelect Cpart => (HalfSelect)((_opcode >> 31) & 0x3);
|
|
}
|
|
|
|
struct InstIadd3I
|
|
{
|
|
private ulong _opcode;
|
|
public InstIadd3I(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x8000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x4000000000000) != 0;
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool X => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstIadd3C
|
|
{
|
|
private ulong _opcode;
|
|
public InstIadd3C(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool NegA => (_opcode & 0x8000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x4000000000000) != 0;
|
|
public bool NegC => (_opcode & 0x2000000000000) != 0;
|
|
public bool X => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstIcmpR
|
|
{
|
|
private ulong _opcode;
|
|
public InstIcmpR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstIcmpI
|
|
{
|
|
private ulong _opcode;
|
|
public InstIcmpI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstIcmpC
|
|
{
|
|
private ulong _opcode;
|
|
public InstIcmpC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstIcmpRc
|
|
{
|
|
private ulong _opcode;
|
|
public InstIcmpRc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstIde
|
|
{
|
|
private ulong _opcode;
|
|
public InstIde(ulong opcode) => _opcode = opcode;
|
|
public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
|
|
public bool Di => (_opcode & 0x20) != 0;
|
|
}
|
|
|
|
struct InstIdpR
|
|
{
|
|
private ulong _opcode;
|
|
public InstIdpR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool IsHi => (_opcode & 0x4000000000000) != 0;
|
|
public bool SrcASign => (_opcode & 0x2000000000000) != 0;
|
|
public bool IsDp => (_opcode & 0x1000000000000) != 0;
|
|
public bool SrcBSign => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstIdpC
|
|
{
|
|
private ulong _opcode;
|
|
public InstIdpC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool IsHi => (_opcode & 0x4000000000000) != 0;
|
|
public bool SrcASign => (_opcode & 0x2000000000000) != 0;
|
|
public bool IsDp => (_opcode & 0x1000000000000) != 0;
|
|
public bool SrcBSign => (_opcode & 0x800000000000) != 0;
|
|
}
|
|
|
|
struct InstImadR
|
|
{
|
|
private ulong _opcode;
|
|
public InstImadR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Hilo => (_opcode & 0x40000000000000) != 0;
|
|
public bool BSigned => (_opcode & 0x20000000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool X => (_opcode & 0x2000000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstImadI
|
|
{
|
|
private ulong _opcode;
|
|
public InstImadI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Hilo => (_opcode & 0x40000000000000) != 0;
|
|
public bool BSigned => (_opcode & 0x20000000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool X => (_opcode & 0x2000000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstImadC
|
|
{
|
|
private ulong _opcode;
|
|
public InstImadC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Hilo => (_opcode & 0x40000000000000) != 0;
|
|
public bool BSigned => (_opcode & 0x20000000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool X => (_opcode & 0x2000000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstImadRc
|
|
{
|
|
private ulong _opcode;
|
|
public InstImadRc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Hilo => (_opcode & 0x40000000000000) != 0;
|
|
public bool BSigned => (_opcode & 0x20000000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool X => (_opcode & 0x2000000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstImad32i
|
|
{
|
|
private ulong _opcode;
|
|
public InstImad32i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public bool BSigned => (_opcode & 0x200000000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 55) & 0x3);
|
|
public bool ASigned => (_opcode & 0x40000000000000) != 0;
|
|
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
|
|
public bool Hilo => (_opcode & 0x20000000000000) != 0;
|
|
}
|
|
|
|
struct InstImadspR
|
|
{
|
|
private ulong _opcode;
|
|
public InstImadspR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
|
|
public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
|
|
public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
|
|
}
|
|
|
|
struct InstImadspI
|
|
{
|
|
private ulong _opcode;
|
|
public InstImadspI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
|
|
public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
|
|
public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
|
|
}
|
|
|
|
struct InstImadspC
|
|
{
|
|
private ulong _opcode;
|
|
public InstImadspC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
|
|
public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
|
|
public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
|
|
}
|
|
|
|
struct InstImadspRc
|
|
{
|
|
private ulong _opcode;
|
|
public InstImadspRc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
|
|
public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
|
|
public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
|
|
}
|
|
|
|
struct InstImnmxR
|
|
{
|
|
private ulong _opcode;
|
|
public InstImnmxR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstImnmxI
|
|
{
|
|
private ulong _opcode;
|
|
public InstImnmxI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstImnmxC
|
|
{
|
|
private ulong _opcode;
|
|
public InstImnmxC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstImulR
|
|
{
|
|
private ulong _opcode;
|
|
public InstImulR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x10000000000) != 0;
|
|
public bool BSigned => (_opcode & 0x20000000000) != 0;
|
|
public bool Hilo => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstImulI
|
|
{
|
|
private ulong _opcode;
|
|
public InstImulI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x10000000000) != 0;
|
|
public bool BSigned => (_opcode & 0x20000000000) != 0;
|
|
public bool Hilo => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstImulC
|
|
{
|
|
private ulong _opcode;
|
|
public InstImulC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x10000000000) != 0;
|
|
public bool BSigned => (_opcode & 0x20000000000) != 0;
|
|
public bool Hilo => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstImul32i
|
|
{
|
|
private ulong _opcode;
|
|
public InstImul32i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public bool ASigned => (_opcode & 0x40000000000000) != 0;
|
|
public bool BSigned => (_opcode & 0x80000000000000) != 0;
|
|
public bool Hilo => (_opcode & 0x20000000000000) != 0;
|
|
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
|
|
}
|
|
|
|
struct InstIpa
|
|
{
|
|
private ulong _opcode;
|
|
public InstIpa(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public IpaOp IpaOp => (IpaOp)((_opcode >> 54) & 0x3);
|
|
public int Msi => (int)((_opcode >> 52) & 0x3);
|
|
public bool Sat => (_opcode & 0x8000000000000) != 0;
|
|
public bool Idx => (_opcode & 0x4000000000) != 0;
|
|
public int Imm10 => (int)((_opcode >> 28) & 0x3FF);
|
|
public int SrcPred => (int)((_opcode >> 47) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstIsberd
|
|
{
|
|
private ulong _opcode;
|
|
public InstIsberd(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
|
|
public IBase IBase => (IBase)((_opcode >> 33) & 0x3);
|
|
public bool O => (_opcode & 0x100000000) != 0;
|
|
public bool P => (_opcode & 0x80000000) != 0;
|
|
}
|
|
|
|
struct InstIscaddR
|
|
{
|
|
private ulong _opcode;
|
|
public InstIscaddR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public int Imm5 => (int)((_opcode >> 39) & 0x1F);
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
|
|
}
|
|
|
|
struct InstIscaddI
|
|
{
|
|
private ulong _opcode;
|
|
public InstIscaddI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public int Imm5 => (int)((_opcode >> 39) & 0x1F);
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
|
|
}
|
|
|
|
struct InstIscaddC
|
|
{
|
|
private ulong _opcode;
|
|
public InstIscaddC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public int Imm5 => (int)((_opcode >> 39) & 0x1F);
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
|
|
}
|
|
|
|
struct InstIscadd32i
|
|
{
|
|
private ulong _opcode;
|
|
public InstIscadd32i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
|
|
public int Imm5 => (int)((_opcode >> 53) & 0x1F);
|
|
}
|
|
|
|
struct InstIsetR
|
|
{
|
|
private ulong _opcode;
|
|
public InstIsetR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public bool BVal => (_opcode & 0x100000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
}
|
|
|
|
struct InstIsetI
|
|
{
|
|
private ulong _opcode;
|
|
public InstIsetI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public bool BVal => (_opcode & 0x100000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
}
|
|
|
|
struct InstIsetC
|
|
{
|
|
private ulong _opcode;
|
|
public InstIsetC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public bool BVal => (_opcode & 0x100000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
}
|
|
|
|
struct InstIsetpR
|
|
{
|
|
private ulong _opcode;
|
|
public InstIsetpR(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
}
|
|
|
|
struct InstIsetpI
|
|
{
|
|
private ulong _opcode;
|
|
public InstIsetpI(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
}
|
|
|
|
struct InstIsetpC
|
|
{
|
|
private ulong _opcode;
|
|
public InstIsetpC(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
}
|
|
|
|
struct InstJcal
|
|
{
|
|
private ulong _opcode;
|
|
public InstJcal(ulong opcode) => _opcode = opcode;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
public bool Inc => (_opcode & 0x40) != 0;
|
|
}
|
|
|
|
struct InstJmp
|
|
{
|
|
private ulong _opcode;
|
|
public InstJmp(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public bool Lmt => (_opcode & 0x40) != 0;
|
|
public bool U => (_opcode & 0x80) != 0;
|
|
}
|
|
|
|
struct InstJmx
|
|
{
|
|
private ulong _opcode;
|
|
public InstJmx(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public bool Lmt => (_opcode & 0x40) != 0;
|
|
}
|
|
|
|
struct InstKil
|
|
{
|
|
private ulong _opcode;
|
|
public InstKil(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
}
|
|
|
|
struct InstLd
|
|
{
|
|
private ulong _opcode;
|
|
public InstLd(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 58) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 56) & 0x3);
|
|
public LsSize LsSize => (LsSize)((_opcode >> 53) & 0x7);
|
|
public bool E => (_opcode & 0x10000000000000) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
}
|
|
|
|
struct InstLdc
|
|
{
|
|
private ulong _opcode;
|
|
public InstLdc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
|
|
public AddressMode AddressMode => (AddressMode)((_opcode >> 44) & 0x3);
|
|
public int CbufSlot => (int)((_opcode >> 36) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0xFFFF);
|
|
}
|
|
|
|
struct InstLdg
|
|
{
|
|
private ulong _opcode;
|
|
public InstLdg(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public LsSize LsSize => (LsSize)((_opcode >> 48) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 46) & 0x3);
|
|
public bool E => (_opcode & 0x200000000000) != 0;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
}
|
|
|
|
struct InstLdl
|
|
{
|
|
private ulong _opcode;
|
|
public InstLdl(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
|
|
public CacheOp2 CacheOp => (CacheOp2)((_opcode >> 44) & 0x3);
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
}
|
|
|
|
struct InstLds
|
|
{
|
|
private ulong _opcode;
|
|
public InstLds(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
|
|
public bool U => (_opcode & 0x100000000000) != 0;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
}
|
|
|
|
struct InstLeaR
|
|
{
|
|
private ulong _opcode;
|
|
public InstLeaR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x400000000000) != 0;
|
|
public bool NegA => (_opcode & 0x200000000000) != 0;
|
|
public int ImmU5 => (int)((_opcode >> 39) & 0x1F);
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
}
|
|
|
|
struct InstLeaI
|
|
{
|
|
private ulong _opcode;
|
|
public InstLeaI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x400000000000) != 0;
|
|
public bool NegA => (_opcode & 0x200000000000) != 0;
|
|
public int ImmU5 => (int)((_opcode >> 39) & 0x1F);
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
}
|
|
|
|
struct InstLeaC
|
|
{
|
|
private ulong _opcode;
|
|
public InstLeaC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x400000000000) != 0;
|
|
public bool NegA => (_opcode & 0x200000000000) != 0;
|
|
public int ImmU5 => (int)((_opcode >> 39) & 0x1F);
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
}
|
|
|
|
struct InstLeaHiR
|
|
{
|
|
private ulong _opcode;
|
|
public InstLeaHiR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x4000000000) != 0;
|
|
public bool NegA => (_opcode & 0x2000000000) != 0;
|
|
public int ImmU5 => (int)((_opcode >> 28) & 0x1F);
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
}
|
|
|
|
struct InstLeaHiC
|
|
{
|
|
private ulong _opcode;
|
|
public InstLeaHiC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x200000000000000) != 0;
|
|
public bool NegA => (_opcode & 0x100000000000000) != 0;
|
|
public int ImmU5 => (int)((_opcode >> 51) & 0x1F);
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
}
|
|
|
|
struct InstLepc
|
|
{
|
|
private ulong _opcode;
|
|
public InstLepc(ulong opcode) => _opcode = opcode;
|
|
}
|
|
|
|
struct InstLongjmp
|
|
{
|
|
private ulong _opcode;
|
|
public InstLongjmp(ulong opcode) => _opcode = opcode;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
}
|
|
|
|
struct InstLopR
|
|
{
|
|
private ulong _opcode;
|
|
public InstLopR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 44) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
public LogicOp Lop => (LogicOp)((_opcode >> 41) & 0x3);
|
|
public bool NegA => (_opcode & 0x8000000000) != 0;
|
|
public bool NegB => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstLopI
|
|
{
|
|
private ulong _opcode;
|
|
public InstLopI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 44) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
public LogicOp LogicOp => (LogicOp)((_opcode >> 41) & 0x3);
|
|
public bool NegA => (_opcode & 0x8000000000) != 0;
|
|
public bool NegB => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstLopC
|
|
{
|
|
private ulong _opcode;
|
|
public InstLopC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 44) & 0x3);
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
public LogicOp LogicOp => (LogicOp)((_opcode >> 41) & 0x3);
|
|
public bool NegA => (_opcode & 0x8000000000) != 0;
|
|
public bool NegB => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstLop3R
|
|
{
|
|
private ulong _opcode;
|
|
public InstLop3R(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 36) & 0x3);
|
|
public bool X => (_opcode & 0x4000000000) != 0;
|
|
public int Imm => (int)((_opcode >> 28) & 0xFF);
|
|
}
|
|
|
|
struct InstLop3I
|
|
{
|
|
private ulong _opcode;
|
|
public InstLop3I(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x200000000000000) != 0;
|
|
public int Imm => (int)((_opcode >> 48) & 0xFF);
|
|
}
|
|
|
|
struct InstLop3C
|
|
{
|
|
private ulong _opcode;
|
|
public InstLop3C(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x100000000000000) != 0;
|
|
public int Imm => (int)((_opcode >> 48) & 0xFF);
|
|
}
|
|
|
|
struct InstLop32i
|
|
{
|
|
private ulong _opcode;
|
|
public InstLop32i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public bool X => (_opcode & 0x200000000000000) != 0;
|
|
public LogicOp LogicOp => (LogicOp)((_opcode >> 53) & 0x3);
|
|
public bool NegA => (_opcode & 0x80000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x100000000000000) != 0;
|
|
}
|
|
|
|
struct InstMembar
|
|
{
|
|
private ulong _opcode;
|
|
public InstMembar(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Membar Membar => (Membar)((_opcode >> 8) & 0x3);
|
|
public Ivall Ivall => (Ivall)((_opcode >> 0) & 0x3);
|
|
}
|
|
|
|
struct InstMovR
|
|
{
|
|
private ulong _opcode;
|
|
public InstMovR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int QuadMask => (int)((_opcode >> 39) & 0xF);
|
|
}
|
|
|
|
struct InstMovI
|
|
{
|
|
private ulong _opcode;
|
|
public InstMovI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int QuadMask => (int)((_opcode >> 39) & 0xF);
|
|
}
|
|
|
|
struct InstMovC
|
|
{
|
|
private ulong _opcode;
|
|
public InstMovC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int QuadMask => (int)((_opcode >> 39) & 0xF);
|
|
}
|
|
|
|
struct InstMov32i
|
|
{
|
|
private ulong _opcode;
|
|
public InstMov32i(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int QuadMask => (int)((_opcode >> 12) & 0xF);
|
|
}
|
|
|
|
struct InstMufu
|
|
{
|
|
private ulong _opcode;
|
|
public InstMufu(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public MufuOp MufuOp => (MufuOp)((_opcode >> 20) & 0xF);
|
|
public bool AbsA => (_opcode & 0x400000000000) != 0;
|
|
public bool NegA => (_opcode & 0x1000000000000) != 0;
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstNop
|
|
{
|
|
private ulong _opcode;
|
|
public InstNop(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
|
|
public bool Trig => (_opcode & 0x2000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
|
|
}
|
|
|
|
struct InstOutR
|
|
{
|
|
private ulong _opcode;
|
|
public InstOutR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstOutI
|
|
{
|
|
private ulong _opcode;
|
|
public InstOutI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstOutC
|
|
{
|
|
private ulong _opcode;
|
|
public InstOutC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
|
|
}
|
|
|
|
struct InstP2rR
|
|
{
|
|
private ulong _opcode;
|
|
public InstP2rR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public bool Ccpr => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstP2rI
|
|
{
|
|
private ulong _opcode;
|
|
public InstP2rI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public bool Ccpr => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstP2rC
|
|
{
|
|
private ulong _opcode;
|
|
public InstP2rC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public bool Ccpr => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstPbk
|
|
{
|
|
private ulong _opcode;
|
|
public InstPbk(ulong opcode) => _opcode = opcode;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
}
|
|
|
|
struct InstPcnt
|
|
{
|
|
private ulong _opcode;
|
|
public InstPcnt(ulong opcode) => _opcode = opcode;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
}
|
|
|
|
struct InstPexit
|
|
{
|
|
private ulong _opcode;
|
|
public InstPexit(ulong opcode) => _opcode = opcode;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
}
|
|
|
|
struct InstPixld
|
|
{
|
|
private ulong _opcode;
|
|
public InstPixld(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int DestPred => (int)((_opcode >> 45) & 0x7);
|
|
public PixMode PixMode => (PixMode)((_opcode >> 31) & 0x7);
|
|
public int Imm8 => (int)((_opcode >> 20) & 0xFF);
|
|
}
|
|
|
|
struct InstPlongjmp
|
|
{
|
|
private ulong _opcode;
|
|
public InstPlongjmp(ulong opcode) => _opcode = opcode;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
}
|
|
|
|
struct InstPopcR
|
|
{
|
|
private ulong _opcode;
|
|
public InstPopcR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegB => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstPopcI
|
|
{
|
|
private ulong _opcode;
|
|
public InstPopcI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegB => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstPopcC
|
|
{
|
|
private ulong _opcode;
|
|
public InstPopcC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool NegB => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstPret
|
|
{
|
|
private ulong _opcode;
|
|
public InstPret(ulong opcode) => _opcode = opcode;
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
public bool Inc => (_opcode & 0x40) != 0;
|
|
}
|
|
|
|
struct InstPrmtR
|
|
{
|
|
private ulong _opcode;
|
|
public InstPrmtR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
|
|
}
|
|
|
|
struct InstPrmtI
|
|
{
|
|
private ulong _opcode;
|
|
public InstPrmtI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
|
|
}
|
|
|
|
struct InstPrmtC
|
|
{
|
|
private ulong _opcode;
|
|
public InstPrmtC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
|
|
}
|
|
|
|
struct InstPrmtRc
|
|
{
|
|
private ulong _opcode;
|
|
public InstPrmtRc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
|
|
}
|
|
|
|
struct InstPset
|
|
{
|
|
private ulong _opcode;
|
|
public InstPset(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public int Src2Pred => (int)((_opcode >> 12) & 0x7);
|
|
public bool Src2PredInv => (_opcode & 0x8000) != 0;
|
|
public int Src1Pred => (int)((_opcode >> 29) & 0x7);
|
|
public bool Src1PredInv => (_opcode & 0x100000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp BoolOpAB => (BoolOp)((_opcode >> 24) & 0x3);
|
|
public BoolOp BoolOpC => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public bool BVal => (_opcode & 0x100000000000) != 0;
|
|
}
|
|
|
|
struct InstPsetp
|
|
{
|
|
private ulong _opcode;
|
|
public InstPsetp(ulong opcode) => _opcode = opcode;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
public int Src2Pred => (int)((_opcode >> 12) & 0x7);
|
|
public bool Src2PredInv => (_opcode & 0x8000) != 0;
|
|
public int Src1Pred => (int)((_opcode >> 29) & 0x7);
|
|
public bool Src1PredInv => (_opcode & 0x100000000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public BoolOp BoolOpAB => (BoolOp)((_opcode >> 24) & 0x3);
|
|
public BoolOp BoolOpC => (BoolOp)((_opcode >> 45) & 0x3);
|
|
}
|
|
|
|
struct InstR2b
|
|
{
|
|
private ulong _opcode;
|
|
public InstR2b(ulong opcode) => _opcode = opcode;
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public BarMode Mode => (BarMode)((_opcode >> 32) & 0x3);
|
|
public int Name => (int)((_opcode >> 28) & 0xF);
|
|
}
|
|
|
|
struct InstR2pR
|
|
{
|
|
private ulong _opcode;
|
|
public InstR2pR(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public bool Ccpr => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstR2pI
|
|
{
|
|
private ulong _opcode;
|
|
public InstR2pI(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public bool Ccpr => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstR2pC
|
|
{
|
|
private ulong _opcode;
|
|
public InstR2pC(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
|
|
public bool Ccpr => (_opcode & 0x10000000000) != 0;
|
|
}
|
|
|
|
struct InstRam
|
|
{
|
|
private ulong _opcode;
|
|
public InstRam(ulong opcode) => _opcode = opcode;
|
|
}
|
|
|
|
struct InstRed
|
|
{
|
|
private ulong _opcode;
|
|
public InstRed(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 0) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int Imm20 => (int)((_opcode >> 28) & 0xFFFFF);
|
|
public AtomSize RedSize => (AtomSize)((_opcode >> 20) & 0x7);
|
|
public RedOp RedOp => (RedOp)((_opcode >> 23) & 0x7);
|
|
public bool E => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstRet
|
|
{
|
|
private ulong _opcode;
|
|
public InstRet(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
}
|
|
|
|
struct InstRroR
|
|
{
|
|
private ulong _opcode;
|
|
public InstRroR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool RroOp => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstRroI
|
|
{
|
|
private ulong _opcode;
|
|
public InstRroI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool RroOp => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstRroC
|
|
{
|
|
private ulong _opcode;
|
|
public InstRroC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool AbsB => (_opcode & 0x2000000000000) != 0;
|
|
public bool NegB => (_opcode & 0x200000000000) != 0;
|
|
public bool RroOp => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstRtt
|
|
{
|
|
private ulong _opcode;
|
|
public InstRtt(ulong opcode) => _opcode = opcode;
|
|
}
|
|
|
|
struct InstS2r
|
|
{
|
|
private ulong _opcode;
|
|
public InstS2r(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public SReg SReg => (SReg)((_opcode >> 20) & 0xFF);
|
|
}
|
|
|
|
struct InstSam
|
|
{
|
|
private ulong _opcode;
|
|
public InstSam(ulong opcode) => _opcode = opcode;
|
|
}
|
|
|
|
struct InstSelR
|
|
{
|
|
private ulong _opcode;
|
|
public InstSelR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstSelI
|
|
{
|
|
private ulong _opcode;
|
|
public InstSelI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstSelC
|
|
{
|
|
private ulong _opcode;
|
|
public InstSelC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
}
|
|
|
|
struct InstSetcrsptr
|
|
{
|
|
private ulong _opcode;
|
|
public InstSetcrsptr(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
}
|
|
|
|
struct InstSetlmembase
|
|
{
|
|
private ulong _opcode;
|
|
public InstSetlmembase(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
}
|
|
|
|
struct InstShfLR
|
|
{
|
|
private ulong _opcode;
|
|
public InstShfLR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool M => (_opcode & 0x4000000000000) != 0;
|
|
public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
|
|
public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
|
|
}
|
|
|
|
struct InstShfRR
|
|
{
|
|
private ulong _opcode;
|
|
public InstShfRR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool M => (_opcode & 0x4000000000000) != 0;
|
|
public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
|
|
public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
|
|
}
|
|
|
|
struct InstShfLI
|
|
{
|
|
private ulong _opcode;
|
|
public InstShfLI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool M => (_opcode & 0x4000000000000) != 0;
|
|
public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
|
|
public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
|
|
public int Imm6 => (int)((_opcode >> 20) & 0x3F);
|
|
}
|
|
|
|
struct InstShfRI
|
|
{
|
|
private ulong _opcode;
|
|
public InstShfRI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool M => (_opcode & 0x4000000000000) != 0;
|
|
public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
|
|
public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
|
|
public int Imm6 => (int)((_opcode >> 20) & 0x3F);
|
|
}
|
|
|
|
struct InstShfl
|
|
{
|
|
private ulong _opcode;
|
|
public InstShfl(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int SrcBImm => (int)((_opcode >> 20) & 0x1F);
|
|
public int SrcCImm => (int)((_opcode >> 34) & 0x1FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public ShflMode ShflMode => (ShflMode)((_opcode >> 30) & 0x3);
|
|
public bool CFixShfl => (_opcode & 0x20000000) != 0;
|
|
public bool BFixShfl => (_opcode & 0x10000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 48) & 0x7);
|
|
}
|
|
|
|
struct InstShlR
|
|
{
|
|
private ulong _opcode;
|
|
public InstShlR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
public bool M => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstShlI
|
|
{
|
|
private ulong _opcode;
|
|
public InstShlI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
public bool M => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstShlC
|
|
{
|
|
private ulong _opcode;
|
|
public InstShlC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x80000000000) != 0;
|
|
public bool M => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstShrR
|
|
{
|
|
private ulong _opcode;
|
|
public InstShrR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
|
|
public bool Brev => (_opcode & 0x10000000000) != 0;
|
|
public bool M => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstShrI
|
|
{
|
|
private ulong _opcode;
|
|
public InstShrI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
|
|
public bool Brev => (_opcode & 0x10000000000) != 0;
|
|
public bool M => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstShrC
|
|
{
|
|
private ulong _opcode;
|
|
public InstShrC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Signed => (_opcode & 0x1000000000000) != 0;
|
|
public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
|
|
public bool Brev => (_opcode & 0x10000000000) != 0;
|
|
public bool M => (_opcode & 0x8000000000) != 0;
|
|
}
|
|
|
|
struct InstSsy
|
|
{
|
|
private ulong _opcode;
|
|
public InstSsy(ulong opcode) => _opcode = opcode;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
public bool Ca => (_opcode & 0x20) != 0;
|
|
}
|
|
|
|
struct InstSt
|
|
{
|
|
private ulong _opcode;
|
|
public InstSt(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 58) & 0x7);
|
|
public CacheOp Cop => (CacheOp)((_opcode >> 56) & 0x3);
|
|
public LsSize LsSize => (LsSize)((_opcode >> 53) & 0x7);
|
|
public bool E => (_opcode & 0x10000000000000) != 0;
|
|
public int Imm32 => (int)(_opcode >> 20);
|
|
}
|
|
|
|
struct InstStg
|
|
{
|
|
private ulong _opcode;
|
|
public InstStg(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 46) & 0x3);
|
|
public bool E => (_opcode & 0x200000000000) != 0;
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
}
|
|
|
|
struct InstStl
|
|
{
|
|
private ulong _opcode;
|
|
public InstStl(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
|
|
public CacheOp2 CacheOp => (CacheOp2)((_opcode >> 44) & 0x3);
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
}
|
|
|
|
struct InstStp
|
|
{
|
|
private ulong _opcode;
|
|
public InstStp(ulong opcode) => _opcode = opcode;
|
|
public bool Wait => (_opcode & 0x80000000) != 0;
|
|
public int Imm8 => (int)((_opcode >> 20) & 0xFF);
|
|
}
|
|
|
|
struct InstSts
|
|
{
|
|
private ulong _opcode;
|
|
public InstSts(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
|
|
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
|
|
}
|
|
|
|
struct InstSuatomB
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuatomB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public SuatomSize Size => (SuatomSize)((_opcode >> 36) & 0x7);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public SuatomOp Op => (SuatomOp)((_opcode >> 29) & 0xF);
|
|
public bool Ba => (_opcode & 0x10000000) != 0;
|
|
}
|
|
|
|
struct InstSuatom
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuatom(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public SuatomSize Size => (SuatomSize)((_opcode >> 51) & 0x7);
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public SuatomOp Op => (SuatomOp)((_opcode >> 29) & 0xF);
|
|
public bool Ba => (_opcode & 0x10000000) != 0;
|
|
}
|
|
|
|
struct InstSuatomB2
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuatomB2(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int DestPred => (int)((_opcode >> 51) & 0x7);
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public SuatomSize Size => (SuatomSize)((_opcode >> 36) & 0x7);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public SuatomOp Op => (SuatomOp)((_opcode >> 29) & 0xF);
|
|
public bool Ba => (_opcode & 0x10000000) != 0;
|
|
}
|
|
|
|
struct InstSuatomCasB
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuatomCasB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public SuatomSize Size => (SuatomSize)((_opcode >> 36) & 0x7);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public int DestPred => (int)((_opcode >> 30) & 0x7);
|
|
public bool Ba => (_opcode & 0x10000000) != 0;
|
|
}
|
|
|
|
struct InstSuatomCas
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuatomCas(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public SuatomSize Size => (SuatomSize)((_opcode >> 51) & 0x7);
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public int DestPred => (int)((_opcode >> 30) & 0x7);
|
|
public bool Ba => (_opcode & 0x10000000) != 0;
|
|
}
|
|
|
|
struct InstSuldDB
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuldDB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public int DestPred2 => (int)((_opcode >> 30) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 24) & 0x3);
|
|
public bool Ba => (_opcode & 0x800000) != 0;
|
|
public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
|
|
}
|
|
|
|
struct InstSuldD
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuldD(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public int DestPred2 => (int)((_opcode >> 30) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 24) & 0x3);
|
|
public bool Ba => (_opcode & 0x800000) != 0;
|
|
public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
|
|
}
|
|
|
|
struct InstSuldB
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuldB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public int DestPred2 => (int)((_opcode >> 30) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 24) & 0x3);
|
|
public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
|
|
}
|
|
|
|
struct InstSuld
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuld(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public int DestPred2 => (int)((_opcode >> 30) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 24) & 0x3);
|
|
public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
|
|
}
|
|
|
|
struct InstSuredB
|
|
{
|
|
private ulong _opcode;
|
|
public InstSuredB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public RedOp Op => (RedOp)((_opcode >> 24) & 0x7);
|
|
public bool Ba => (_opcode & 0x800000) != 0;
|
|
public SuatomSize Size => (SuatomSize)((_opcode >> 20) & 0x7);
|
|
}
|
|
|
|
struct InstSured
|
|
{
|
|
private ulong _opcode;
|
|
public InstSured(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public RedOp Op => (RedOp)((_opcode >> 24) & 0x7);
|
|
public bool Ba => (_opcode & 0x800000) != 0;
|
|
public SuatomSize Size => (SuatomSize)((_opcode >> 20) & 0x7);
|
|
}
|
|
|
|
struct InstSustDB
|
|
{
|
|
private ulong _opcode;
|
|
public InstSustDB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 24) & 0x3);
|
|
public bool Ba => (_opcode & 0x800000) != 0;
|
|
public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
|
|
}
|
|
|
|
struct InstSustD
|
|
{
|
|
private ulong _opcode;
|
|
public InstSustD(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 24) & 0x3);
|
|
public bool Ba => (_opcode & 0x800000) != 0;
|
|
public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
|
|
}
|
|
|
|
struct InstSustB
|
|
{
|
|
private ulong _opcode;
|
|
public InstSustB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 24) & 0x3);
|
|
public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
|
|
}
|
|
|
|
struct InstSust
|
|
{
|
|
private ulong _opcode;
|
|
public InstSust(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
|
|
public CacheOp CacheOp => (CacheOp)((_opcode >> 24) & 0x3);
|
|
public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
|
|
}
|
|
|
|
struct InstSync
|
|
{
|
|
private ulong _opcode;
|
|
public InstSync(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
|
|
}
|
|
|
|
struct InstTex
|
|
{
|
|
private ulong _opcode;
|
|
public InstTex(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Lc => (_opcode & 0x400000000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 51) & 0x7);
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public Lod Lod => (Lod)((_opcode >> 55) & 0x7);
|
|
public bool Aoffi => (_opcode & 0x40000000000000) != 0;
|
|
public bool Dc => (_opcode & 0x4000000000000) != 0;
|
|
public bool Ndv => (_opcode & 0x800000000) != 0;
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
}
|
|
|
|
struct InstTexB
|
|
{
|
|
private ulong _opcode;
|
|
public InstTexB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Lcb => (_opcode & 0x10000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 51) & 0x7);
|
|
public Lod Lodb => (Lod)((_opcode >> 37) & 0x7);
|
|
public bool Aoffib => (_opcode & 0x1000000000) != 0;
|
|
public bool Dc => (_opcode & 0x4000000000000) != 0;
|
|
public bool Ndv => (_opcode & 0x800000000) != 0;
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
}
|
|
|
|
struct InstTexs
|
|
{
|
|
private ulong _opcode;
|
|
public InstTexs(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public TexsTarget Target => (TexsTarget)((_opcode >> 53) & 0xF);
|
|
public int WMask => (int)((_opcode >> 50) & 0x7);
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int Dest2 => (int)((_opcode >> 28) & 0xFF);
|
|
}
|
|
|
|
struct InstTld
|
|
{
|
|
private ulong _opcode;
|
|
public InstTld(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public bool Lod => (_opcode & 0x80000000000000) != 0;
|
|
public bool Toff => (_opcode & 0x800000000) != 0;
|
|
public bool Ms => (_opcode & 0x4000000000000) != 0;
|
|
public bool Cl => (_opcode & 0x40000000000000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 51) & 0x7);
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
}
|
|
|
|
struct InstTldB
|
|
{
|
|
private ulong _opcode;
|
|
public InstTldB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public bool Lod => (_opcode & 0x80000000000000) != 0;
|
|
public bool Toff => (_opcode & 0x800000000) != 0;
|
|
public bool Ms => (_opcode & 0x4000000000000) != 0;
|
|
public bool Cl => (_opcode & 0x40000000000000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 51) & 0x7);
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
}
|
|
|
|
struct InstTlds
|
|
{
|
|
private ulong _opcode;
|
|
public InstTlds(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public TldsTarget Target => (TldsTarget)((_opcode >> 53) & 0xF);
|
|
public int WMask => (int)((_opcode >> 50) & 0x7);
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int Dest2 => (int)((_opcode >> 28) & 0xFF);
|
|
}
|
|
|
|
struct InstTld4
|
|
{
|
|
private ulong _opcode;
|
|
public InstTld4(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Lc => (_opcode & 0x400000000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 51) & 0x7);
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public TexComp TexComp => (TexComp)((_opcode >> 56) & 0x3);
|
|
public TexOffset Toff => (TexOffset)((_opcode >> 54) & 0x3);
|
|
public bool Dc => (_opcode & 0x4000000000000) != 0;
|
|
public bool Ndv => (_opcode & 0x800000000) != 0;
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
}
|
|
|
|
struct InstTld4B
|
|
{
|
|
private ulong _opcode;
|
|
public InstTld4B(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Lc => (_opcode & 0x10000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 51) & 0x7);
|
|
public TexComp TexComp => (TexComp)((_opcode >> 38) & 0x3);
|
|
public TexOffset Toff => (TexOffset)((_opcode >> 36) & 0x3);
|
|
public bool Dc => (_opcode & 0x4000000000000) != 0;
|
|
public bool Ndv => (_opcode & 0x800000000) != 0;
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
}
|
|
|
|
struct InstTld4s
|
|
{
|
|
private ulong _opcode;
|
|
public InstTld4s(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public TexComp TexComp => (TexComp)((_opcode >> 52) & 0x3);
|
|
public bool Aoffi => (_opcode & 0x8000000000000) != 0;
|
|
public bool Dc => (_opcode & 0x4000000000000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int Dest2 => (int)((_opcode >> 28) & 0xFF);
|
|
}
|
|
|
|
struct InstTmml
|
|
{
|
|
private ulong _opcode;
|
|
public InstTmml(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public bool Ndv => (_opcode & 0x800000000) != 0;
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
}
|
|
|
|
struct InstTmmlB
|
|
{
|
|
private ulong _opcode;
|
|
public InstTmmlB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public bool Ndv => (_opcode & 0x800000000) != 0;
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
}
|
|
|
|
struct InstTxa
|
|
{
|
|
private ulong _opcode;
|
|
public InstTxa(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public bool Ndv => (_opcode & 0x800000000) != 0;
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
}
|
|
|
|
struct InstTxd
|
|
{
|
|
private ulong _opcode;
|
|
public InstTxd(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int DestPred => (int)((_opcode >> 51) & 0x7);
|
|
public bool Lc => (_opcode & 0x4000000000000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public bool Toff => (_opcode & 0x800000000) != 0;
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
}
|
|
|
|
struct InstTxdB
|
|
{
|
|
private ulong _opcode;
|
|
public InstTxdB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int DestPred => (int)((_opcode >> 51) & 0x7);
|
|
public bool Lc => (_opcode & 0x4000000000000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public bool Toff => (_opcode & 0x800000000) != 0;
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
|
|
}
|
|
|
|
struct InstTxq
|
|
{
|
|
private ulong _opcode;
|
|
public InstTxq(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int TidB => (int)((_opcode >> 36) & 0x1FFF);
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public TexQuery TexQuery => (TexQuery)((_opcode >> 22) & 0x3F);
|
|
}
|
|
|
|
struct InstTxqB
|
|
{
|
|
private ulong _opcode;
|
|
public InstTxqB(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool Nodep => (_opcode & 0x2000000000000) != 0;
|
|
public int WMask => (int)((_opcode >> 31) & 0xF);
|
|
public TexQuery TexQuery => (TexQuery)((_opcode >> 22) & 0x3F);
|
|
}
|
|
|
|
struct InstVabsdiff
|
|
{
|
|
private ulong _opcode;
|
|
public InstVabsdiff(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool DFormat => (_opcode & 0x40000000000000) != 0;
|
|
public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
|
|
public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
|
|
public bool Sat => (_opcode & 0x80000000000000) != 0;
|
|
public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
|
|
public bool BVideo => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstVabsdiff4
|
|
{
|
|
private ulong _opcode;
|
|
public InstVabsdiff4(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public VideoRed VRed => (VideoRed)((_opcode >> 53) & 0x3);
|
|
public LaneMask4 LaneMask4 => (LaneMask4)((int)((_opcode >> 49) & 0xC) | (int)((_opcode >> 36) & 0x3));
|
|
public bool Sat => (_opcode & 0x4000000000000) != 0;
|
|
public bool SrcBFmt => (_opcode & 0x2000000000000) != 0;
|
|
public bool SrcAFmt => (_opcode & 0x1000000000000) != 0;
|
|
public bool DFormat => (_opcode & 0x4000000000) != 0;
|
|
public ASelect4 Asel4 => (ASelect4)((_opcode >> 32) & 0xF);
|
|
public BSelect4 Bsel4 => (BSelect4)((_opcode >> 28) & 0xF);
|
|
}
|
|
|
|
struct InstVadd
|
|
{
|
|
private ulong _opcode;
|
|
public InstVadd(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 56) & 0x3);
|
|
public bool DFormat => (_opcode & 0x40000000000000) != 0;
|
|
public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
|
|
public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
|
|
public bool Sat => (_opcode & 0x80000000000000) != 0;
|
|
public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
|
|
public bool BVideo => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstVmad
|
|
{
|
|
private ulong _opcode;
|
|
public InstVmad(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
|
|
public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
|
|
public bool Sat => (_opcode & 0x80000000000000) != 0;
|
|
public AvgMode AvgMode => (AvgMode)((_opcode >> 53) & 0x3);
|
|
public VideoScale VideoScale => (VideoScale)((_opcode >> 51) & 0x3);
|
|
public bool BVideo => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstVmnmx
|
|
{
|
|
private ulong _opcode;
|
|
public InstVmnmx(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
|
|
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 Mn => (_opcode & 0x100000000000000) != 0;
|
|
public bool BVideo => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstVote
|
|
{
|
|
private ulong _opcode;
|
|
public InstVote(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public VoteMode VoteMode => (VoteMode)((_opcode >> 48) & 0x3);
|
|
public int VpDest => (int)((_opcode >> 45) & 0x7);
|
|
}
|
|
|
|
struct InstVotevtg
|
|
{
|
|
private ulong _opcode;
|
|
public InstVotevtg(ulong opcode) => _opcode = opcode;
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public VoteMode VoteMode => (VoteMode)((_opcode >> 48) & 0x3);
|
|
public int Imm28 => (int)((_opcode >> 20) & 0xFFFFFFF);
|
|
}
|
|
|
|
struct InstVset
|
|
{
|
|
private ulong _opcode;
|
|
public InstVset(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public IComp VComp => (IComp)((_opcode >> 54) & 0x7);
|
|
public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
|
|
public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
|
|
public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
|
|
public bool BVideo => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstVsetp
|
|
{
|
|
private ulong _opcode;
|
|
public InstVsetp(ulong opcode) => _opcode = opcode;
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
|
|
public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
|
|
public IComp VComp => (IComp)((int)((_opcode >> 45) & 0x4) | (int)((_opcode >> 43) & 0x3));
|
|
public BoolOp BoolOp => (BoolOp)((_opcode >> 45) & 0x3);
|
|
public int SrcPred => (int)((_opcode >> 39) & 0x7);
|
|
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
|
|
public int DestPred => (int)((_opcode >> 3) & 0x7);
|
|
public int DestPredInv => (int)((_opcode >> 0) & 0x7);
|
|
public bool BVideo => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstVshl
|
|
{
|
|
private ulong _opcode;
|
|
public InstVshl(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Mv => (_opcode & 0x2000000000000) != 0;
|
|
public bool DFormat => (_opcode & 0x40000000000000) != 0;
|
|
public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
|
|
public VectorSelect BSelect => (VectorSelect)((_opcode >> 28) & 0x7);
|
|
public bool Sat => (_opcode & 0x80000000000000) != 0;
|
|
public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
|
|
public bool BVideo => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstVshr
|
|
{
|
|
private ulong _opcode;
|
|
public InstVshr(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Mv => (_opcode & 0x2000000000000) != 0;
|
|
public bool DFormat => (_opcode & 0x40000000000000) != 0;
|
|
public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
|
|
public VectorSelect BSelect => (VectorSelect)((_opcode >> 28) & 0x7);
|
|
public bool Sat => (_opcode & 0x80000000000000) != 0;
|
|
public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
|
|
public bool BVideo => (_opcode & 0x4000000000000) != 0;
|
|
}
|
|
|
|
struct InstXmadR
|
|
{
|
|
private ulong _opcode;
|
|
public InstXmadR(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcB => (int)((_opcode >> 20) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool HiloA => (_opcode & 0x20000000000000) != 0;
|
|
public XmadCop XmadCop => (XmadCop)((_opcode >> 50) & 0x7);
|
|
public bool BSigned => (_opcode & 0x2000000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x1000000000000) != 0;
|
|
public bool X => (_opcode & 0x4000000000) != 0;
|
|
public bool Mrg => (_opcode & 0x2000000000) != 0;
|
|
public bool Psl => (_opcode & 0x1000000000) != 0;
|
|
public bool HiloB => (_opcode & 0x800000000) != 0;
|
|
}
|
|
|
|
struct InstXmadI
|
|
{
|
|
private ulong _opcode;
|
|
public InstXmadI(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
|
|
public bool HiloA => (_opcode & 0x20000000000000) != 0;
|
|
public XmadCop XmadCop => (XmadCop)((_opcode >> 50) & 0x7);
|
|
public bool BSigned => (_opcode & 0x2000000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x1000000000000) != 0;
|
|
public bool X => (_opcode & 0x4000000000) != 0;
|
|
public bool Mrg => (_opcode & 0x2000000000) != 0;
|
|
public bool Psl => (_opcode & 0x1000000000) != 0;
|
|
}
|
|
|
|
struct InstXmadC
|
|
{
|
|
private ulong _opcode;
|
|
public InstXmadC(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool Mrg => (_opcode & 0x100000000000000) != 0;
|
|
public bool Psl => (_opcode & 0x80000000000000) != 0;
|
|
public bool X => (_opcode & 0x40000000000000) != 0;
|
|
public bool HiloA => (_opcode & 0x20000000000000) != 0;
|
|
public bool HiloB => (_opcode & 0x10000000000000) != 0;
|
|
public XmadCop2 XmadCop => (XmadCop2)((_opcode >> 50) & 0x3);
|
|
public bool BSigned => (_opcode & 0x2000000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
|
|
struct InstXmadRc
|
|
{
|
|
private ulong _opcode;
|
|
public InstXmadRc(ulong opcode) => _opcode = opcode;
|
|
public int Dest => (int)((_opcode >> 0) & 0xFF);
|
|
public int SrcA => (int)((_opcode >> 8) & 0xFF);
|
|
public int SrcC => (int)((_opcode >> 39) & 0xFF);
|
|
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
|
|
public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
|
|
public int Pred => (int)((_opcode >> 16) & 0x7);
|
|
public bool PredInv => (_opcode & 0x80000) != 0;
|
|
public bool WriteCC => (_opcode & 0x800000000000) != 0;
|
|
public bool X => (_opcode & 0x40000000000000) != 0;
|
|
public bool HiloA => (_opcode & 0x20000000000000) != 0;
|
|
public bool HiloB => (_opcode & 0x10000000000000) != 0;
|
|
public XmadCop2 XmadCop => (XmadCop2)((_opcode >> 50) & 0x3);
|
|
public bool BSigned => (_opcode & 0x2000000000000) != 0;
|
|
public bool ASigned => (_opcode & 0x1000000000000) != 0;
|
|
}
|
|
} |