aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Decoders
diff options
context:
space:
mode:
authorTSR Berry <20988865+TSRBerry@users.noreply.github.com>2023-04-08 01:22:00 +0200
committerMary <thog@protonmail.com>2023-04-27 23:51:14 +0200
commitcee712105850ac3385cd0091a923438167433f9f (patch)
tree4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.Graphics.Shader/Decoders
parentcd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff)
Move solution and projects to src
Diffstat (limited to 'Ryujinx.Graphics.Shader/Decoders')
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/Block.cs168
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/DecodedFunction.cs48
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/DecodedProgram.cs57
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/Decoder.cs765
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/FunctionType.cs10
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs5383
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/InstName.cs188
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/InstOp.cs27
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/InstProps.cs28
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/InstTable.cs390
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/Register.cs36
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/RegisterConsts.cs13
-rw-r--r--Ryujinx.Graphics.Shader/Decoders/RegisterType.cs9
13 files changed, 0 insertions, 7122 deletions
diff --git a/Ryujinx.Graphics.Shader/Decoders/Block.cs b/Ryujinx.Graphics.Shader/Decoders/Block.cs
deleted file mode 100644
index 7d94e3f9..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/Block.cs
+++ /dev/null
@@ -1,168 +0,0 @@
-using Ryujinx.Graphics.Shader.IntermediateRepresentation;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- class PushOpInfo
- {
- public InstOp Op { get; }
- public Dictionary<Block, Operand> Consumers;
-
- public PushOpInfo(InstOp op)
- {
- Op = op;
- Consumers = new Dictionary<Block, Operand>();
- }
- }
-
- readonly struct SyncTarget
- {
- public PushOpInfo PushOpInfo { get; }
- public int PushOpId { get; }
-
- public SyncTarget(PushOpInfo pushOpInfo, int pushOpId)
- {
- PushOpInfo = pushOpInfo;
- PushOpId = pushOpId;
- }
- }
-
- class Block
- {
- public ulong Address { get; set; }
- public ulong EndAddress { get; set; }
-
- public List<Block> Predecessors { get; }
- public List<Block> Successors { get; }
-
- public List<InstOp> OpCodes { get; }
- public List<PushOpInfo> PushOpCodes { get; }
- public Dictionary<ulong, SyncTarget> SyncTargets { get; }
-
- public Block(ulong address)
- {
- Address = address;
-
- Predecessors = new List<Block>();
- Successors = new List<Block>();
-
- OpCodes = new List<InstOp>();
- PushOpCodes = new List<PushOpInfo>();
- SyncTargets = new Dictionary<ulong, SyncTarget>();
- }
-
- public void Split(Block rightBlock)
- {
- int splitIndex = BinarySearch(OpCodes, rightBlock.Address);
-
- if (OpCodes[splitIndex].Address < rightBlock.Address)
- {
- splitIndex++;
- }
-
- int splitCount = OpCodes.Count - splitIndex;
- if (splitCount <= 0)
- {
- throw new ArgumentException("Can't split at right block address.");
- }
-
- rightBlock.EndAddress = EndAddress;
- rightBlock.Successors.AddRange(Successors);
- rightBlock.Predecessors.Add(this);
-
- EndAddress = rightBlock.Address;
-
- Successors.Clear();
- Successors.Add(rightBlock);
-
- // Move ops.
- rightBlock.OpCodes.AddRange(OpCodes.GetRange(splitIndex, splitCount));
-
- OpCodes.RemoveRange(splitIndex, splitCount);
-
- // Update push consumers that points to this block.
- foreach (SyncTarget syncTarget in SyncTargets.Values)
- {
- PushOpInfo pushOpInfo = syncTarget.PushOpInfo;
-
- Operand local = pushOpInfo.Consumers[this];
- pushOpInfo.Consumers.Remove(this);
- pushOpInfo.Consumers.Add(rightBlock, local);
- }
-
- foreach ((ulong key, SyncTarget value) in SyncTargets)
- {
- rightBlock.SyncTargets.Add(key, value);
- }
-
- SyncTargets.Clear();
-
- // Move push ops.
- for (int i = 0; i < PushOpCodes.Count; i++)
- {
- if (PushOpCodes[i].Op.Address >= rightBlock.Address)
- {
- int count = PushOpCodes.Count - i;
- rightBlock.PushOpCodes.AddRange(PushOpCodes.Skip(i));
- PushOpCodes.RemoveRange(i, count);
- break;
- }
- }
- }
-
- private static int BinarySearch(List<InstOp> opCodes, ulong address)
- {
- int left = 0;
- int middle = 0;
- int right = opCodes.Count - 1;
-
- while (left <= right)
- {
- int size = right - left;
-
- middle = left + (size >> 1);
-
- InstOp opCode = opCodes[middle];
-
- if (address == opCode.Address)
- {
- break;
- }
-
- if (address < opCode.Address)
- {
- right = middle - 1;
- }
- else
- {
- left = middle + 1;
- }
- }
-
- return middle;
- }
-
- public InstOp GetLastOp()
- {
- if (OpCodes.Count != 0)
- {
- return OpCodes[OpCodes.Count - 1];
- }
-
- return default;
- }
-
- public bool HasNext()
- {
- InstOp lastOp = GetLastOp();
- return OpCodes.Count != 0 && !Decoder.IsUnconditionalBranch(ref lastOp);
- }
-
- public void AddPushOp(InstOp op)
- {
- PushOpCodes.Add(new PushOpInfo(op));
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/DecodedFunction.cs b/Ryujinx.Graphics.Shader/Decoders/DecodedFunction.cs
deleted file mode 100644
index 7a172fe6..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/DecodedFunction.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- class DecodedFunction
- {
- private readonly HashSet<DecodedFunction> _callers;
-
- public bool IsCompilerGenerated => Type != FunctionType.User;
- public FunctionType Type { get; set; }
- public int Id { get; set; }
-
- public ulong Address { get; }
- public Block[] Blocks { get; private set; }
-
- public DecodedFunction(ulong address)
- {
- Address = address;
- _callers = new HashSet<DecodedFunction>();
- Type = FunctionType.User;
- Id = -1;
- }
-
- public void SetBlocks(Block[] blocks)
- {
- if (Blocks != null)
- {
- throw new InvalidOperationException("Blocks have already been set.");
- }
-
- Blocks = blocks;
- }
-
- public void AddCaller(DecodedFunction caller)
- {
- _callers.Add(caller);
- }
-
- public void RemoveCaller(DecodedFunction caller)
- {
- if (_callers.Remove(caller) && _callers.Count == 0)
- {
- Type = FunctionType.Unused;
- }
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/DecodedProgram.cs b/Ryujinx.Graphics.Shader/Decoders/DecodedProgram.cs
deleted file mode 100644
index 2dd60155..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/DecodedProgram.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- readonly struct DecodedProgram : IEnumerable<DecodedFunction>
- {
- public DecodedFunction MainFunction { get; }
- private readonly IReadOnlyDictionary<ulong, DecodedFunction> _functions;
- private readonly List<DecodedFunction> _functionsWithId;
- public int FunctionsWithIdCount => _functionsWithId.Count;
-
- public DecodedProgram(DecodedFunction mainFunction, IReadOnlyDictionary<ulong, DecodedFunction> functions)
- {
- MainFunction = mainFunction;
- _functions = functions;
- _functionsWithId = new List<DecodedFunction>();
- }
-
- public DecodedFunction GetFunctionByAddress(ulong address)
- {
- if (_functions.TryGetValue(address, out DecodedFunction function))
- {
- return function;
- }
-
- return null;
- }
-
- public DecodedFunction GetFunctionById(int id)
- {
- if ((uint)id >= (uint)_functionsWithId.Count)
- {
- throw new ArgumentOutOfRangeException(nameof(id));
- }
-
- return _functionsWithId[id];
- }
-
- public void AddFunctionAndSetId(DecodedFunction function)
- {
- function.Id = _functionsWithId.Count;
- _functionsWithId.Add(function);
- }
-
- public IEnumerator<DecodedFunction> GetEnumerator()
- {
- return _functions.Values.GetEnumerator();
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return GetEnumerator();
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/Decoder.cs b/Ryujinx.Graphics.Shader/Decoders/Decoder.cs
deleted file mode 100644
index c619b9bb..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/Decoder.cs
+++ /dev/null
@@ -1,765 +0,0 @@
-using Ryujinx.Graphics.Shader.Translation;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.CompilerServices;
-
-using static Ryujinx.Graphics.Shader.IntermediateRepresentation.OperandHelper;
-
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- static class Decoder
- {
- public static DecodedProgram Decode(ShaderConfig config, ulong startAddress)
- {
- Queue<DecodedFunction> functionsQueue = new Queue<DecodedFunction>();
- Dictionary<ulong, DecodedFunction> functionsVisited = new Dictionary<ulong, DecodedFunction>();
-
- DecodedFunction EnqueueFunction(ulong address)
- {
- if (!functionsVisited.TryGetValue(address, out DecodedFunction function))
- {
- functionsVisited.Add(address, function = new DecodedFunction(address));
- functionsQueue.Enqueue(function);
- }
-
- return function;
- }
-
- DecodedFunction mainFunction = EnqueueFunction(0);
-
- while (functionsQueue.TryDequeue(out DecodedFunction currentFunction))
- {
- List<Block> blocks = new List<Block>();
- Queue<Block> workQueue = new Queue<Block>();
- Dictionary<ulong, Block> visited = new Dictionary<ulong, Block>();
-
- Block GetBlock(ulong blkAddress)
- {
- if (!visited.TryGetValue(blkAddress, out Block block))
- {
- block = new Block(blkAddress);
-
- workQueue.Enqueue(block);
- visited.Add(blkAddress, block);
- }
-
- return block;
- }
-
- GetBlock(currentFunction.Address);
-
- bool hasNewTarget;
-
- do
- {
- while (workQueue.TryDequeue(out Block currBlock))
- {
- // Check if the current block is inside another block.
- if (BinarySearch(blocks, currBlock.Address, out int nBlkIndex))
- {
- Block nBlock = blocks[nBlkIndex];
-
- if (nBlock.Address == currBlock.Address)
- {
- throw new InvalidOperationException("Found duplicate block address on the list.");
- }
-
- nBlock.Split(currBlock);
- blocks.Insert(nBlkIndex + 1, currBlock);
-
- continue;
- }
-
- // If we have a block after the current one, set the limit address.
- ulong limitAddress = ulong.MaxValue;
-
- if (nBlkIndex != blocks.Count)
- {
- Block nBlock = blocks[nBlkIndex];
-
- int nextIndex = nBlkIndex + 1;
-
- if (nBlock.Address < currBlock.Address && nextIndex < blocks.Count)
- {
- limitAddress = blocks[nextIndex].Address;
- }
- else if (nBlock.Address > currBlock.Address)
- {
- limitAddress = blocks[nBlkIndex].Address;
- }
- }
-
- FillBlock(config, currBlock, limitAddress, startAddress);
-
- if (currBlock.OpCodes.Count != 0)
- {
- // We should have blocks for all possible branch targets,
- // including those from PBK/PCNT/SSY instructions.
- foreach (PushOpInfo pushOp in currBlock.PushOpCodes)
- {
- GetBlock(pushOp.Op.GetAbsoluteAddress());
- }
-
- // Set child blocks. "Branch" is the block the branch instruction
- // points to (when taken), "Next" is the block at the next address,
- // executed when the branch is not taken. For Unconditional Branches
- // or end of program, Next is null.
- InstOp lastOp = currBlock.GetLastOp();
-
- if (lastOp.Name == InstName.Cal)
- {
- EnqueueFunction(lastOp.GetAbsoluteAddress()).AddCaller(currentFunction);
- }
- else if (lastOp.Name == InstName.Bra)
- {
- Block succBlock = GetBlock(lastOp.GetAbsoluteAddress());
- currBlock.Successors.Add(succBlock);
- succBlock.Predecessors.Add(currBlock);
- }
-
- if (!IsUnconditionalBranch(ref lastOp))
- {
- Block succBlock = GetBlock(currBlock.EndAddress);
- currBlock.Successors.Insert(0, succBlock);
- succBlock.Predecessors.Add(currBlock);
- }
- }
-
- // Insert the new block on the list (sorted by address).
- if (blocks.Count != 0)
- {
- Block nBlock = blocks[nBlkIndex];
-
- blocks.Insert(nBlkIndex + (nBlock.Address < currBlock.Address ? 1 : 0), currBlock);
- }
- else
- {
- blocks.Add(currBlock);
- }
- }
-
- // Propagate SSY/PBK addresses into their uses (SYNC/BRK).
- foreach (Block block in blocks.Where(x => x.PushOpCodes.Count != 0))
- {
- for (int pushOpIndex = 0; pushOpIndex < block.PushOpCodes.Count; pushOpIndex++)
- {
- PropagatePushOp(visited, block, pushOpIndex);
- }
- }
-
- // Try to find targets for BRX (indirect branch) instructions.
- hasNewTarget = FindBrxTargets(config, blocks, GetBlock);
-
- // If we discovered new branch targets from the BRX instruction,
- // we need another round of decoding to decode the new blocks.
- // Additionally, we may have more SSY/PBK targets to propagate,
- // and new BRX instructions.
- }
- while (hasNewTarget);
-
- currentFunction.SetBlocks(blocks.ToArray());
- }
-
- return new DecodedProgram(mainFunction, functionsVisited);
- }
-
- private static bool BinarySearch(List<Block> blocks, ulong address, out int index)
- {
- index = 0;
-
- int left = 0;
- int right = blocks.Count - 1;
-
- while (left <= right)
- {
- int size = right - left;
-
- int middle = left + (size >> 1);
-
- Block block = blocks[middle];
-
- index = middle;
-
- if (address >= block.Address && address < block.EndAddress)
- {
- return true;
- }
-
- if (address < block.Address)
- {
- right = middle - 1;
- }
- else
- {
- left = middle + 1;
- }
- }
-
- return false;
- }
-
- private static void FillBlock(ShaderConfig config, Block block, ulong limitAddress, ulong startAddress)
- {
- IGpuAccessor gpuAccessor = config.GpuAccessor;
-
- ulong address = block.Address;
- int bufferOffset = 0;
- ReadOnlySpan<ulong> buffer = ReadOnlySpan<ulong>.Empty;
-
- InstOp op = default;
-
- do
- {
- if (address + 7 >= limitAddress)
- {
- break;
- }
-
- // Ignore scheduling instructions, which are written every 32 bytes.
- if ((address & 0x1f) == 0)
- {
- address += 8;
- bufferOffset++;
- continue;
- }
-
- if (bufferOffset >= buffer.Length)
- {
- buffer = gpuAccessor.GetCode(startAddress + address, 8);
- bufferOffset = 0;
- }
-
- ulong opCode = buffer[bufferOffset++];
-
- op = InstTable.GetOp(address, opCode);
-
- if (op.Props.HasFlag(InstProps.TexB))
- {
- config.SetUsedFeature(FeatureFlags.Bindless);
- }
-
- if (op.Name == InstName.Ald || op.Name == InstName.Ast || op.Name == InstName.Ipa)
- {
- SetUserAttributeUses(config, op.Name, opCode);
- }
- else if (op.Name == InstName.Pbk || op.Name == InstName.Pcnt || op.Name == InstName.Ssy)
- {
- block.AddPushOp(op);
- }
-
- block.OpCodes.Add(op);
-
- address += 8;
- }
- while (!op.Props.HasFlag(InstProps.Bra));
-
- block.EndAddress = address;
- }
-
- private static void SetUserAttributeUses(ShaderConfig config, InstName name, ulong opCode)
- {
- int offset;
- int count = 1;
- bool isStore = false;
- bool indexed = false;
- bool perPatch = false;
-
- if (name == InstName.Ast)
- {
- InstAst opAst = new InstAst(opCode);
- count = (int)opAst.AlSize + 1;
- offset = opAst.Imm11;
- indexed = opAst.Phys;
- perPatch = opAst.P;
- isStore = true;
- }
- else if (name == InstName.Ald)
- {
- InstAld opAld = new InstAld(opCode);
- count = (int)opAld.AlSize + 1;
- offset = opAld.Imm11;
- indexed = opAld.Phys;
- perPatch = opAld.P;
- isStore = opAld.O;
- }
- else /* if (name == InstName.Ipa) */
- {
- InstIpa opIpa = new InstIpa(opCode);
- offset = opIpa.Imm10;
- indexed = opIpa.Idx;
- }
-
- if (indexed)
- {
- if (isStore)
- {
- config.SetAllOutputUserAttributes();
- config.SetUsedFeature(FeatureFlags.OaIndexing);
- }
- else
- {
- config.SetAllInputUserAttributes();
- config.SetUsedFeature(FeatureFlags.IaIndexing);
- }
- }
- else
- {
- for (int elemIndex = 0; elemIndex < count; elemIndex++)
- {
- int attr = offset + elemIndex * 4;
-
- if (perPatch)
- {
- if (attr >= AttributeConsts.UserAttributePerPatchBase && attr < AttributeConsts.UserAttributePerPatchEnd)
- {
- int userAttr = attr - AttributeConsts.UserAttributePerPatchBase;
- int index = userAttr / 16;
-
- if (isStore)
- {
- config.SetOutputUserAttributePerPatch(index);
- }
- else
- {
- config.SetInputUserAttributePerPatch(index);
- }
- }
- }
- else if (attr >= AttributeConsts.UserAttributeBase && attr < AttributeConsts.UserAttributeEnd)
- {
- int userAttr = attr - AttributeConsts.UserAttributeBase;
- int index = userAttr / 16;
-
- if (isStore)
- {
- config.SetOutputUserAttribute(index);
- }
- else
- {
- config.SetInputUserAttribute(index, (userAttr >> 2) & 3);
- }
- }
-
- if (!isStore &&
- (attr == AttributeConsts.FogCoord ||
- (attr >= AttributeConsts.FrontColorDiffuseR && attr < AttributeConsts.ClipDistance0) ||
- (attr >= AttributeConsts.TexCoordBase && attr < AttributeConsts.TexCoordEnd)))
- {
- config.SetUsedFeature(FeatureFlags.FixedFuncAttr);
- }
- }
- }
- }
-
- public static bool IsUnconditionalBranch(ref InstOp op)
- {
- return IsUnconditional(ref op) && op.Props.HasFlag(InstProps.Bra);
- }
-
- private static bool IsUnconditional(ref InstOp op)
- {
- InstConditional condOp = new InstConditional(op.RawOpCode);
-
- if ((op.Name == InstName.Bra || op.Name == InstName.Exit) && condOp.Ccc != Ccc.T)
- {
- return false;
- }
-
- return condOp.Pred == RegisterConsts.PredicateTrueIndex && !condOp.PredInv;
- }
-
- private static bool FindBrxTargets(ShaderConfig config, IEnumerable<Block> blocks, Func<ulong, Block> getBlock)
- {
- bool hasNewTarget = false;
-
- foreach (Block block in blocks)
- {
- InstOp lastOp = block.GetLastOp();
- bool hasNext = block.HasNext();
-
- if (lastOp.Name == InstName.Brx && block.Successors.Count == (hasNext ? 1 : 0))
- {
- HashSet<ulong> visited = new HashSet<ulong>();
-
- InstBrx opBrx = new InstBrx(lastOp.RawOpCode);
- ulong baseOffset = lastOp.GetAbsoluteAddress();
-
- // An indirect branch could go anywhere,
- // try to get the possible target offsets from the constant buffer.
- (int cbBaseOffset, int cbOffsetsCount) = FindBrxTargetRange(block, opBrx.SrcA);
-
- if (cbOffsetsCount != 0)
- {
- hasNewTarget = true;
- }
-
- for (int i = 0; i < cbOffsetsCount; i++)
- {
- uint targetOffset = config.ConstantBuffer1Read(cbBaseOffset + i * 4);
- ulong targetAddress = baseOffset + targetOffset;
-
- if (visited.Add(targetAddress))
- {
- Block target = getBlock(targetAddress);
- target.Predecessors.Add(block);
- block.Successors.Add(target);
- }
- }
- }
- }
-
- return hasNewTarget;
- }
-
- private static (int, int) FindBrxTargetRange(Block block, int brxReg)
- {
- // Try to match the following pattern:
- //
- // IMNMX.U32 Rx, Rx, UpperBound, PT
- // SHL Rx, Rx, 0x2
- // LDC Rx, c[0x1][Rx+BaseOffset]
- //
- // Here, Rx is an arbitrary register, "UpperBound" and "BaseOffset" are constants.
- // The above pattern is assumed to be generated by the compiler before BRX,
- // as the instruction is usually used to implement jump tables for switch statement optimizations.
- // On a successful match, "BaseOffset" is the offset in bytes where the jump offsets are
- // located on the constant buffer, and "UpperBound" is the total number of offsets for the BRX, minus 1.
-
- HashSet<Block> visited = new HashSet<Block>();
-
- var ldcLocation = FindFirstRegWrite(visited, new BlockLocation(block, block.OpCodes.Count - 1), brxReg);
- if (ldcLocation.Block == null || ldcLocation.Block.OpCodes[ldcLocation.Index].Name != InstName.Ldc)
- {
- return (0, 0);
- }
-
- GetOp<InstLdc>(ldcLocation, out var opLdc);
-
- if (opLdc.CbufSlot != 1 || opLdc.AddressMode != 0)
- {
- return (0, 0);
- }
-
- var shlLocation = FindFirstRegWrite(visited, ldcLocation, opLdc.SrcA);
- if (shlLocation.Block == null || !shlLocation.IsImmInst(InstName.Shl))
- {
- return (0, 0);
- }
-
- GetOp<InstShlI>(shlLocation, out var opShl);
-
- if (opShl.Imm20 != 2)
- {
- return (0, 0);
- }
-
- var imnmxLocation = FindFirstRegWrite(visited, shlLocation, opShl.SrcA);
- if (imnmxLocation.Block == null || !imnmxLocation.IsImmInst(InstName.Imnmx))
- {
- return (0, 0);
- }
-
- GetOp<InstImnmxI>(imnmxLocation, out var opImnmx);
-
- if (opImnmx.Signed || opImnmx.SrcPred != RegisterConsts.PredicateTrueIndex || opImnmx.SrcPredInv)
- {
- return (0, 0);
- }
-
- return (opLdc.CbufOffset, opImnmx.Imm20 + 1);
- }
-
- private static void GetOp<T>(BlockLocation location, out T op) where T : unmanaged
- {
- ulong rawOp = location.Block.OpCodes[location.Index].RawOpCode;
- op = Unsafe.As<ulong, T>(ref rawOp);
- }
-
- private readonly struct BlockLocation
- {
- public Block Block { get; }
- public int Index { get; }
-
- public BlockLocation(Block block, int index)
- {
- Block = block;
- Index = index;
- }
-
- public bool IsImmInst(InstName name)
- {
- InstOp op = Block.OpCodes[Index];
- return op.Name == name && op.Props.HasFlag(InstProps.Ib);
- }
- }
-
- private static BlockLocation FindFirstRegWrite(HashSet<Block> visited, BlockLocation location, int regIndex)
- {
- Queue<BlockLocation> toVisit = new Queue<BlockLocation>();
- toVisit.Enqueue(location);
- visited.Add(location.Block);
-
- while (toVisit.TryDequeue(out var currentLocation))
- {
- Block block = currentLocation.Block;
- for (int i = currentLocation.Index - 1; i >= 0; i--)
- {
- if (WritesToRegister(block.OpCodes[i], regIndex))
- {
- return new BlockLocation(block, i);
- }
- }
-
- foreach (Block predecessor in block.Predecessors)
- {
- if (visited.Add(predecessor))
- {
- toVisit.Enqueue(new BlockLocation(predecessor, predecessor.OpCodes.Count));
- }
- }
- }
-
- return new BlockLocation(null, 0);
- }
-
- private static bool WritesToRegister(InstOp op, int regIndex)
- {
- // Predicate instruction only ever writes to predicate, so we shouldn't check those.
- if ((op.Props & (InstProps.Rd | InstProps.Rd2)) == 0)
- {
- return false;
- }
-
- if (op.Props.HasFlag(InstProps.Rd2) && (byte)(op.RawOpCode >> 28) == regIndex)
- {
- return true;
- }
-
- return (byte)op.RawOpCode == regIndex;
- }
-
- private enum MergeType
- {
- Brk,
- Cont,
- Sync
- }
-
- private struct PathBlockState
- {
- public Block Block { get; }
-
- private enum RestoreType
- {
- None,
- PopPushOp,
- PushBranchOp
- }
-
- private RestoreType _restoreType;
-
- private ulong _restoreValue;
- private MergeType _restoreMergeType;
-
- public bool ReturningFromVisit => _restoreType != RestoreType.None;
-
- public PathBlockState(Block block)
- {
- Block = block;
- _restoreType = RestoreType.None;
- _restoreValue = 0;
- _restoreMergeType = default;
- }
-
- public PathBlockState(int oldStackSize)
- {
- Block = null;
- _restoreType = RestoreType.PopPushOp;
- _restoreValue = (ulong)oldStackSize;
- _restoreMergeType = default;
- }
-
- public PathBlockState(ulong syncAddress, MergeType mergeType)
- {
- Block = null;
- _restoreType = RestoreType.PushBranchOp;
- _restoreValue = syncAddress;
- _restoreMergeType = mergeType;
- }
-
- public void RestoreStackState(Stack<(ulong, MergeType)> branchStack)
- {
- if (_restoreType == RestoreType.PushBranchOp)
- {
- branchStack.Push((_restoreValue, _restoreMergeType));
- }
- else if (_restoreType == RestoreType.PopPushOp)
- {
- while (branchStack.Count > (uint)_restoreValue)
- {
- branchStack.Pop();
- }
- }
- }
- }
-
- private static void PropagatePushOp(Dictionary<ulong, Block> blocks, Block currBlock, int pushOpIndex)
- {
- PushOpInfo pushOpInfo = currBlock.PushOpCodes[pushOpIndex];
- InstOp pushOp = pushOpInfo.Op;
-
- Block target = blocks[pushOp.GetAbsoluteAddress()];
-
- Stack<PathBlockState> workQueue = new Stack<PathBlockState>();
- HashSet<Block> visited = new HashSet<Block>();
- Stack<(ulong, MergeType)> branchStack = new Stack<(ulong, MergeType)>();
-
- void Push(PathBlockState pbs)
- {
- // When block is null, this means we are pushing a restore operation.
- // Restore operations are used to undo the work done inside a block
- // when we return from it, for example it pops addresses pushed by
- // SSY/PBK instructions inside the block, and pushes addresses poped
- // by SYNC/BRK.
- // For blocks, if it's already visited, we just ignore to avoid going
- // around in circles and getting stuck here.
- if (pbs.Block == null || !visited.Contains(pbs.Block))
- {
- workQueue.Push(pbs);
- }
- }
-
- Push(new PathBlockState(currBlock));
-
- while (workQueue.TryPop(out PathBlockState pbs))
- {
- if (pbs.ReturningFromVisit)
- {
- pbs.RestoreStackState(branchStack);
-
- continue;
- }
-
- Block current = pbs.Block;
-
- // If the block was already processed, we just ignore it, otherwise
- // we would push the same child blocks of an already processed block,
- // and go around in circles until memory is exhausted.
- if (!visited.Add(current))
- {
- continue;
- }
-
- int pushOpsCount = current.PushOpCodes.Count;
- if (pushOpsCount != 0)
- {
- Push(new PathBlockState(branchStack.Count));
-
- for (int index = pushOpIndex; index < pushOpsCount; index++)
- {
- InstOp currentPushOp = current.PushOpCodes[index].Op;
- MergeType pushMergeType = GetMergeTypeFromPush(currentPushOp.Name);
- branchStack.Push((currentPushOp.GetAbsoluteAddress(), pushMergeType));
- }
- }
-
- pushOpIndex = 0;
-
- bool hasNext = current.HasNext();
- if (hasNext)
- {
- Push(new PathBlockState(current.Successors[0]));
- }
-
- InstOp lastOp = current.GetLastOp();
- if (IsPopBranch(lastOp.Name))
- {
- MergeType popMergeType = GetMergeTypeFromPop(lastOp.Name);
-
- bool found = true;
- ulong targetAddress = 0UL;
- MergeType mergeType;
-
- do
- {
- if (branchStack.Count == 0)
- {
- found = false;
- break;
- }
-
- (targetAddress, mergeType) = branchStack.Pop();
-
- // Push the target address (this will be used to push the address
- // back into the PBK/PCNT/SSY stack when we return from that block),
- Push(new PathBlockState(targetAddress, mergeType));
- }
- while (mergeType != popMergeType);
-
- // Make sure we found the correct address,
- // the push and pop instruction types must match, so:
- // - BRK can only consume addresses pushed by PBK.
- // - CONT can only consume addresses pushed by PCNT.
- // - SYNC can only consume addresses pushed by SSY.
- if (found)
- {
- if (branchStack.Count == 0)
- {
- // If the entire stack was consumed, then the current pop instruction
- // just consumed the address from our push instruction.
- if (current.SyncTargets.TryAdd(pushOp.Address, new SyncTarget(pushOpInfo, current.SyncTargets.Count)))
- {
- pushOpInfo.Consumers.Add(current, Local());
- target.Predecessors.Add(current);
- current.Successors.Add(target);
- }
- }
- else
- {
- // Push the block itself into the work queue for processing.
- Push(new PathBlockState(blocks[targetAddress]));
- }
- }
- }
- else
- {
- // By adding them in descending order (sorted by address), we process the blocks
- // in order (of ascending address), since we work with a LIFO.
- foreach (Block possibleTarget in current.Successors.OrderByDescending(x => x.Address))
- {
- if (!hasNext || possibleTarget != current.Successors[0])
- {
- Push(new PathBlockState(possibleTarget));
- }
- }
- }
- }
- }
-
- public static bool IsPopBranch(InstName name)
- {
- return name == InstName.Brk || name == InstName.Cont || name == InstName.Sync;
- }
-
- private static MergeType GetMergeTypeFromPush(InstName name)
- {
- return name switch
- {
- InstName.Pbk => MergeType.Brk,
- InstName.Pcnt => MergeType.Cont,
- _ => MergeType.Sync
- };
- }
-
- private static MergeType GetMergeTypeFromPop(InstName name)
- {
- return name switch
- {
- InstName.Brk => MergeType.Brk,
- InstName.Cont => MergeType.Cont,
- _ => MergeType.Sync
- };
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/FunctionType.cs b/Ryujinx.Graphics.Shader/Decoders/FunctionType.cs
deleted file mode 100644
index 6ea6a82a..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/FunctionType.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- enum FunctionType : byte
- {
- User,
- Unused,
- BuiltInFSIBegin,
- BuiltInFSIEnd
- }
-}
diff --git a/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs b/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs
deleted file mode 100644
index 0c22ddc0..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs
+++ /dev/null
@@ -1,5383 +0,0 @@
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- enum AlSize
- {
- _32 = 0,
- _64 = 1,
- _96 = 2,
- _128 = 3,
- }
-
- enum AtomSize
- {
- U32 = 0,
- S32 = 1,
- U64 = 2,
- F32FtzRn = 3,
- F16x2FtzRn = 4,
- S64 = 5,
- }
-
- enum AtomOp
- {
- Add = 0,
- Min = 1,
- Max = 2,
- Inc = 3,
- Dec = 4,
- And = 5,
- Or = 6,
- Xor = 7,
- Exch = 8,
- Safeadd = 10,
- }
-
- enum AtomsSize
- {
- U32 = 0,
- S32 = 1,
- U64 = 2,
- S64 = 3,
- }
-
- enum BarMode
- {
- Bar = 0,
- Result = 1,
- Warp = 2,
- }
-
- enum BarOp
- {
- Sync = 0,
- Arv = 1,
- Red = 2,
- Scan = 3,
- SyncAll = 4,
- }
-
- enum BarRedOp
- {
- Popc = 0,
- And = 1,
- Or = 2,
- }
-
- enum Bpt
- {
- DrainIllegal = 0,
- Cal = 1,
- Pause = 2,
- Trap = 3,
- Int = 4,
- Drain = 5,
- }
-
- enum Ccc
- {
- F = 0,
- Lt = 1,
- Eq = 2,
- Le = 3,
- Gt = 4,
- Ne = 5,
- Ge = 6,
- Num = 7,
- Nan = 8,
- Ltu = 9,
- Equ = 10,
- Leu = 11,
- Gtu = 12,
- Neu = 13,
- Geu = 14,
- T = 15,
- Off = 16,
- Lo = 17,
- Sff = 18,
- Ls = 19,
- Hi = 20,
- Sft = 21,
- Hs = 22,
- Oft = 23,
- CsmTa = 24,
- CsmTr = 25,
- CsmMx = 26,
- FcsmTa = 27,
- FcsmTr = 28,
- FcsmMx = 29,
- Rle = 30,
- Rgt = 31,
- }
-
- enum CacheType
- {
- U = 1,
- C = 2,
- I = 3,
- Crs = 4,
- }
-
- enum CctlOp
- {
- Pf1 = 1,
- Pf1_5 = 2,
- Pf2 = 3,
- Wb = 4,
- Iv = 5,
- Ivall = 6,
- Rs = 7,
- Rslb = 9,
- }
-
- enum CctltOp
- {
- Ivth = 1,
- }
-
- enum BoolOp
- {
- And = 0,
- Or = 1,
- Xor = 2,
- }
-
- enum SReg
- {
- LaneId = 0,
- Clock = 1,
- VirtCfg = 2,
- VirtId = 3,
- Pm0 = 4,
- Pm1 = 5,
- Pm2 = 6,
- Pm3 = 7,
- Pm4 = 8,
- Pm5 = 9,
- Pm6 = 10,
- Pm7 = 11,
- OrderingTicket = 15,
- PrimType = 16,
- InvocationId = 17,
- YDirection = 18,
- ThreadKill = 19,
- ShaderType = 20,
- DirectCbeWriteAddressLow = 21,
- DirectCbeWriteAddressHigh = 22,
- DirectCbeWriteEnabled = 23,
- MachineId0 = 24,
- MachineId1 = 25,
- MachineId2 = 26,
- MachineId3 = 27,
- Affinity = 28,
- InvocationInfo = 29,
- WScaleFactorXY = 30,
- WScaleFactorZ = 31,
- TId = 32,
- TIdX = 33,
- TIdY = 34,
- TIdZ = 35,
- CtaParam = 36,
- CtaIdX = 37,
- CtaIdY = 38,
- CtaIdZ = 39,
- Ntid = 40,
- CirQueueIncrMinusOne = 41,
- Nlatc = 42,
- Swinlo = 48,
- Swinsz = 49,
- Smemsz = 50,
- Smembanks = 51,
- LWinLo = 52,
- LWinSz = 53,
- LMemLoSz = 54,
- LMemHiOff = 55,
- EqMask = 56,
- LtMask = 57,
- LeMask = 58,
- GtMask = 59,
- GeMask = 60,
- RegAlloc = 61,
- CtxAddr = 62,
- GlobalErrorStatus = 64,
- WarpErrorStatus = 66,
- WarpErrorStatusClear = 67,
- PmHi0 = 72,
- PmHi1 = 73,
- PmHi2 = 74,
- PmHi3 = 75,
- PmHi4 = 76,
- PmHi5 = 77,
- PmHi6 = 78,
- PmHi7 = 79,
- ClockLo = 80,
- ClockHi = 81,
- GlobalTimerLo = 82,
- GlobalTimerHi = 83,
- HwTaskId = 96,
- CircularQueueEntryIndex = 97,
- CircularQueueEntryAddressLow = 98,
- CircularQueueEntryAddressHigh = 99,
- }
-
- enum RoundMode
- {
- Rn = 0,
- Rm = 1,
- Rp = 2,
- Rz = 3,
- }
-
- enum FComp
- {
- F = 0,
- Lt = 1,
- Eq = 2,
- Le = 3,
- Gt = 4,
- Ne = 5,
- Ge = 6,
- Num = 7,
- Nan = 8,
- Ltu = 9,
- Equ = 10,
- Leu = 11,
- Gtu = 12,
- Neu = 13,
- Geu = 14,
- T = 15,
- }
-
- enum IntegerRound
- {
- Pass = 1,
- Round = 4,
- Floor = 5,
- Ceil = 6,
- Trunc = 7,
- }
-
- enum IDstFmt
- {
- U16 = 1,
- U32 = 2,
- U64 = 3,
- S16 = 5,
- S32 = 6,
- S64 = 7,
- }
-
- enum ISrcFmt
- {
- U8 = 0,
- U16 = 1,
- U32 = 2,
- U64 = 3,
- S8 = 4,
- S16 = 5,
- S32 = 6,
- S64 = 7,
- }
-
- enum ISrcDstFmt
- {
- U8 = 0,
- U16 = 1,
- U32 = 2,
- S8 = 4,
- S16 = 5,
- S32 = 6,
- }
-
- enum RoundMode2
- {
- Round = 0,
- Floor = 1,
- Ceil = 2,
- Trunc = 3,
- }
-
- enum ChkModeF
- {
- Divide = 0,
- }
-
- enum Fmz
- {
- Ftz = 1,
- Fmz = 2,
- }
-
- enum MultiplyScale
- {
- NoScale = 0,
- D2 = 1,
- D4 = 2,
- D8 = 3,
- M8 = 4,
- M4 = 5,
- M2 = 6,
- }
-
- enum OFmt
- {
- F16 = 0,
- F32 = 1,
- MrgH0 = 2,
- MrgH1 = 3,
- }
-
- enum HalfSwizzle
- {
- F16 = 0,
- F32 = 1,
- H0H0 = 2,
- H1H1 = 3,
- }
-
- enum ByteSel
- {
- B0 = 0,
- B1 = 1,
- B2 = 2,
- B3 = 3,
- }
-
- enum DstFmt
- {
- F16 = 1,
- F32 = 2,
- F64 = 3,
- }
-
- enum AvgMode
- {
- NoNeg = 0,
- NegB = 1,
- NegA = 2,
- PlusOne = 3,
- }
-
- enum Lrs
- {
- None = 0,
- RightShift = 1,
- LeftShift = 2,
- }
-
- enum HalfSelect
- {
- B32 = 0,
- H0 = 1,
- H1 = 2,
- }
-
- enum IComp
- {
- F = 0,
- Lt = 1,
- Eq = 2,
- Le = 3,
- Gt = 4,
- Ne = 5,
- Ge = 6,
- T = 7,
- }
-
- enum XMode
- {
- Xlo = 1,
- Xmed = 2,
- Xhi = 3,
- }
-
- enum IpaOp
- {
- Pass = 0,
- Multiply = 1,
- Constant = 2,
- Sc = 3,
- }
-
- enum IBase
- {
- Patch = 1,
- Prim = 2,
- Attr = 3,
- }
-
- enum CacheOpLd
- {
- Ca = 0,
- Cg = 1,
- Ci = 2,
- Cv = 3,
- }
-
- enum CacheOpSt
- {
- Wb = 0,
- Cg = 1,
- Ci = 2,
- Wt = 3,
- }
-
- enum LsSize
- {
- U8 = 0,
- S8 = 1,
- U16 = 2,
- S16 = 3,
- B32 = 4,
- B64 = 5,
- B128 = 6,
- UB128 = 7,
- }
-
- enum LsSize2
- {
- U8 = 0,
- S8 = 1,
- U16 = 2,
- S16 = 3,
- B32 = 4,
- B64 = 5,
- B128 = 6,
- }
-
- enum AddressMode
- {
- Il = 1,
- Is = 2,
- Isl = 3,
- }
-
- enum CacheOp2
- {
- Lu = 1,
- Ci = 2,
- Cv = 3,
- }
-
- enum PredicateOp
- {
- F = 0,
- T = 1,
- Z = 2,
- Nz = 3,
- }
-
- enum LogicOp
- {
- And = 0,
- Or = 1,
- Xor = 2,
- PassB = 3,
- }
-
- enum Membar
- {
- Cta = 0,
- Gl = 1,
- Sys = 2,
- Vc = 3,
- }
-
- enum Ivall
- {
- Ivalld = 1,
- Ivallt = 2,
- Ivalltd = 3,
- }
-
- enum MufuOp
- {
- Cos = 0,
- Sin = 1,
- Ex2 = 2,
- Lg2 = 3,
- Rcp = 4,
- Rsq = 5,
- Rcp64h = 6,
- Rsq64h = 7,
- Sqrt = 8,
- }
-
- enum OutType
- {
- Emit = 1,
- Cut = 2,
- EmitThenCut = 3,
- }
-
- enum PixMode
- {
- Covmask = 1,
- Covered = 2,
- Offset = 3,
- CentroidOffset = 4,
- MyIndex = 5,
- }
-
- enum PMode
- {
- F4e = 1,
- B4e = 2,
- Rc8 = 3,
- Ecl = 4,
- Ecr = 5,
- Rc16 = 6,
- }
-
- enum RedOp
- {
- Add = 0,
- Min = 1,
- Max = 2,
- Inc = 3,
- Dec = 4,
- And = 5,
- Or = 6,
- Xor = 7,
- }
-
- enum XModeShf
- {
- Hi = 1,
- X = 2,
- Xhi = 3,
- }
-
- enum MaxShift
- {
- U64 = 2,
- S64 = 3,
- }
-
- enum ShflMode
- {
- Idx = 0,
- Up = 1,
- Down = 2,
- Bfly = 3,
- }
-
- enum Clamp
- {
- Ign = 0,
- Trap = 2,
- }
-
- enum SuatomSize
- {
- U32 = 0,
- S32 = 1,
- U64 = 2,
- F32FtzRn = 3,
- F16x2FtzRn = 4,
- S64 = 5,
- Sd32 = 6,
- Sd64 = 7,
- }
-
- enum SuDim
- {
- _1d = 0,
- _1dBuffer = 1,
- _1dArray = 2,
- _2d = 3,
- _2dArray = 4,
- _3d = 5,
- }
-
- enum SuatomOp
- {
- Add = 0,
- Min = 1,
- Max = 2,
- Inc = 3,
- Dec = 4,
- And = 5,
- Or = 6,
- Xor = 7,
- Exch = 8,
- }
-
- enum SuSize
- {
- U8 = 0,
- S8 = 1,
- U16 = 2,
- S16 = 3,
- B32 = 4,
- B64 = 5,
- B128 = 6,
- UB128 = 7,
- }
-
- enum SuRgba
- {
- R = 1,
- G = 2,
- Rg = 3,
- B = 4,
- Rb = 5,
- Gb = 6,
- Rgb = 7,
- A = 8,
- Ra = 9,
- Ga = 10,
- Rga = 11,
- Ba = 12,
- Rba = 13,
- Gba = 14,
- Rgba = 15,
- }
-
- enum Lod
- {
- Lz = 1,
- Lb = 2,
- Ll = 3,
- Lba = 6,
- Lla = 7,
- }
-
- enum TexDim
- {
- _1d = 0,
- Array1d = 1,
- _2d = 2,
- Array2d = 3,
- _3d = 4,
- Array3d = 5,
- Cube = 6,
- ArrayCube = 7,
- }
-
- enum TexsTarget
- {
- Texture1DLodZero = 0,
- Texture2D = 1,
- Texture2DLodZero = 2,
- Texture2DLodLevel = 3,
- Texture2DDepthCompare = 4,
- Texture2DLodLevelDepthCompare = 5,
- Texture2DLodZeroDepthCompare = 6,
- Texture2DArray = 7,
- Texture2DArrayLodZero = 8,
- Texture2DArrayLodZeroDepthCompare = 9,
- Texture3D = 10,
- Texture3DLodZero = 11,
- TextureCube = 12,
- TextureCubeLodLevel = 13,
- }
-
- enum TldsTarget
- {
- Texture1DLodZero = 0x0,
- Texture1DLodLevel = 0x1,
- Texture2DLodZero = 0x2,
- Texture2DLodZeroOffset = 0x4,
- Texture2DLodLevel = 0x5,
- Texture2DLodZeroMultisample = 0x6,
- Texture3DLodZero = 0x7,
- Texture2DArrayLodZero = 0x8,
- Texture2DLodLevelOffset = 0xc
- }
-
- enum TexComp
- {
- R = 0,
- G = 1,
- B = 2,
- A = 3,
- }
-
- enum TexOffset
- {
- None = 0,
- Aoffi = 1,
- Ptp = 2,
- }
-
- enum TexQuery
- {
- TexHeaderDimension = 1,
- TexHeaderTextureType = 2,
- TexHeaderSamplerPos = 5,
- TexSamplerFilter = 16,
- TexSamplerLod = 18,
- TexSamplerWrap = 20,
- TexSamplerBorderColor = 22,
- }
-
- enum VectorSelect
- {
- U8B0 = 0,
- U8B1 = 1,
- U8B2 = 2,
- U8B3 = 3,
- U16H0 = 4,
- U16H1 = 5,
- U32 = 6,
- S8B0 = 8,
- S8B1 = 9,
- S8B2 = 10,
- S8B3 = 11,
- S16H0 = 12,
- S16H1 = 13,
- S32 = 14,
- }
-
- enum VideoOp
- {
- Mrg16h = 0,
- Mrg16l = 1,
- Mrg8b0 = 2,
- Mrg8b2 = 3,
- Acc = 4,
- Min = 5,
- Max = 6,
- }
-
- enum VideoRed
- {
- Acc = 1,
- }
-
- enum LaneMask4
- {
- Z = 1,
- W = 2,
- Zw = 3,
- X = 4,
- Xz = 5,
- Xw = 6,
- Xzw = 7,
- Y = 8,
- Yz = 9,
- Yw = 10,
- Yzw = 11,
- Xy = 12,
- Xyz = 13,
- Xyw = 14,
- Xyzw = 15,
- }
-
- enum ASelect4
- {
- _0000 = 0,
- _1111 = 1,
- _2222 = 2,
- _3333 = 3,
- _3210 = 4,
- _5432 = 6,
- _6543 = 7,
- _3201 = 8,
- _3012 = 9,
- _0213 = 10,
- _3120 = 11,
- _1230 = 12,
- _2310 = 13,
- }
-
- enum BSelect4
- {
- _4444 = 0,
- _5555 = 1,
- _6666 = 2,
- _7777 = 3,
- _7654 = 4,
- _5432 = 6,
- _4321 = 7,
- _4567 = 8,
- _6745 = 9,
- _5476 = 10,
- }
-
- enum VideoScale
- {
- Shr7 = 1,
- Shr15 = 2,
- }
-
- enum VoteMode
- {
- All = 0,
- Any = 1,
- Eq = 2,
- }
-
- enum XmadCop
- {
- Cfull = 0,
- Clo = 1,
- Chi = 2,
- Csfu = 3,
- Cbcc = 4,
- }
-
- enum XmadCop2
- {
- Cfull = 0,
- Clo = 1,
- Chi = 2,
- Csfu = 3,
- }
-
- enum ImadspASelect
- {
- U32 = 0,
- S32 = 1,
- U24 = 2,
- S24 = 3,
- U16h0 = 4,
- S16h0 = 5,
- U16h1 = 6,
- S16h1 = 7,
- }
-
- enum ImadspBSelect
- {
- U24 = 0,
- S24 = 1,
- U16h0 = 2,
- S16h0 = 3,
- }
-
- struct InstConditional
- {
- private ulong _opcode;
- public InstConditional(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- }
-
- struct InstAl2p
- {
- private ulong _opcode;
- public InstAl2p(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
- public bool Aio => (_opcode & 0x100000000) != 0;
- public int Imm11 => (int)((_opcode >> 20) & 0x7FF);
- public int DestPred => (int)((_opcode >> 44) & 0x7);
- }
-
- struct InstAld
- {
- private ulong _opcode;
- public InstAld(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm11 => (int)((_opcode >> 20) & 0x7FF);
- public bool P => (_opcode & 0x80000000) != 0;
- public bool O => (_opcode & 0x100000000) != 0;
- public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
- public bool Phys => !P && Imm11 == 0 && SrcA != RegisterConsts.RegisterZeroIndex;
- }
-
- struct InstAst
- {
- private ulong _opcode;
- public InstAst(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 0) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm11 => (int)((_opcode >> 20) & 0x7FF);
- public bool P => (_opcode & 0x80000000) != 0;
- public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
- public bool Phys => !P && Imm11 == 0 && SrcA != RegisterConsts.RegisterZeroIndex;
- }
-
- struct InstAtom
- {
- private ulong _opcode;
- public InstAtom(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm20 => (int)((_opcode >> 28) & 0xFFFFF);
- public AtomSize Size => (AtomSize)((_opcode >> 49) & 0x7);
- public AtomOp Op => (AtomOp)((_opcode >> 52) & 0xF);
- public bool E => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstAtomCas
- {
- private ulong _opcode;
- public InstAtomCas(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int BcRz => (int)((_opcode >> 50) & 0x3);
- public bool E => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstAtoms
- {
- private ulong _opcode;
- public InstAtoms(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm22 => (int)((_opcode >> 30) & 0x3FFFFF);
- public AtomsSize AtomsSize => (AtomsSize)((_opcode >> 28) & 0x3);
- public AtomOp AtomOp => (AtomOp)((_opcode >> 52) & 0xF);
- }
-
- struct InstAtomsCas
- {
- private ulong _opcode;
- public InstAtomsCas(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int AtomsBcRz => (int)((_opcode >> 28) & 0x3);
- }
-
- struct InstB2r
- {
- private ulong _opcode;
- public InstB2r(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int DestPred => (int)((_opcode >> 45) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public BarMode Mode => (BarMode)((_opcode >> 32) & 0x3);
- }
-
- struct InstBar
- {
- private ulong _opcode;
- public InstBar(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm12 => (int)((_opcode >> 20) & 0xFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public BarOp BarOp => (BarOp)((_opcode >> 32) & 0x7);
- public BarRedOp BarRedOp => (BarRedOp)((_opcode >> 35) & 0x3);
- public bool AFixBar => (_opcode & 0x100000000000) != 0;
- public bool BFixBar => (_opcode & 0x80000000000) != 0;
- }
-
- struct InstBfeR
- {
- private ulong _opcode;
- public InstBfeR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public bool Brev => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstBfeI
- {
- private ulong _opcode;
- public InstBfeI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public bool Brev => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstBfeC
- {
- private ulong _opcode;
- public InstBfeC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public bool Brev => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstBfiR
- {
- private ulong _opcode;
- public InstBfiR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstBfiI
- {
- private ulong _opcode;
- public InstBfiI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstBfiC
- {
- private ulong _opcode;
- public InstBfiC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstBfiRc
- {
- private ulong _opcode;
- public InstBfiRc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstBpt
- {
- private ulong _opcode;
- public InstBpt(ulong opcode) => _opcode = opcode;
- public int Imm20 => (int)((_opcode >> 20) & 0xFFFFF);
- public Bpt Bpt => (Bpt)((_opcode >> 6) & 0x7);
- }
-
- struct InstBra
- {
- private ulong _opcode;
- public InstBra(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- public bool Ca => (_opcode & 0x20) != 0;
- public bool Lmt => (_opcode & 0x40) != 0;
- public bool U => (_opcode & 0x80) != 0;
- }
-
- struct InstBrk
- {
- private ulong _opcode;
- public InstBrk(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- }
-
- struct InstBrx
- {
- private ulong _opcode;
- public InstBrx(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- public bool Ca => (_opcode & 0x20) != 0;
- public bool Lmt => (_opcode & 0x40) != 0;
- }
-
- struct InstCal
- {
- private ulong _opcode;
- public InstCal(ulong opcode) => _opcode = opcode;
- public bool Ca => (_opcode & 0x20) != 0;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- public bool Inc => (_opcode & 0x40) != 0;
- }
-
- struct InstCctl
- {
- private ulong _opcode;
- public InstCctl(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm30 => (int)((_opcode >> 22) & 0x3FFFFFFF);
- public bool E => (_opcode & 0x10000000000000) != 0;
- public CacheType Cache => (CacheType)((_opcode >> 4) & 0x7);
- public CctlOp CctlOp => (CctlOp)((_opcode >> 0) & 0xF);
- }
-
- struct InstCctll
- {
- private ulong _opcode;
- public InstCctll(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm22 => (int)((_opcode >> 22) & 0x3FFFFF);
- public int Cache => (int)((_opcode >> 4) & 0x3);
- public CctlOp CctlOp => (CctlOp)((_opcode >> 0) & 0xF);
- }
-
- struct InstCctlt
- {
- private ulong _opcode;
- public InstCctlt(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int TsIdx13 => (int)((_opcode >> 36) & 0x1FFF);
- public CctltOp CctltOp => (CctltOp)((_opcode >> 0) & 0x3);
- }
-
- struct InstCctltR
- {
- private ulong _opcode;
- public InstCctltR(ulong opcode) => _opcode = opcode;
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public CctltOp CctltOp => (CctltOp)((_opcode >> 0) & 0x3);
- }
-
- struct InstCont
- {
- private ulong _opcode;
- public InstCont(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- }
-
- struct InstCset
- {
- private ulong _opcode;
- public InstCset(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public bool BVal => (_opcode & 0x100000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- }
-
- struct InstCsetp
- {
- private ulong _opcode;
- public InstCsetp(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- }
-
- struct InstCs2r
- {
- private ulong _opcode;
- public InstCs2r(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public SReg SReg => (SReg)((_opcode >> 20) & 0xFF);
- }
-
- struct InstDaddR
- {
- private ulong _opcode;
- public InstDaddR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- }
-
- struct InstDaddI
- {
- private ulong _opcode;
- public InstDaddI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- }
-
- struct InstDaddC
- {
- private ulong _opcode;
- public InstDaddC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- }
-
- struct InstDepbar
- {
- private ulong _opcode;
- public InstDepbar(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Le => (_opcode & 0x20000000) != 0;
- public int Sbid => (int)((_opcode >> 26) & 0x7);
- public int PendCnt => (int)((_opcode >> 20) & 0x3F);
- public int Imm6 => (int)((_opcode >> 0) & 0x3F);
- }
-
- struct InstDfmaR
- {
- private ulong _opcode;
- public InstDfmaR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstDfmaI
- {
- private ulong _opcode;
- public InstDfmaI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstDfmaC
- {
- private ulong _opcode;
- public InstDfmaC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstDfmaRc
- {
- private ulong _opcode;
- public InstDfmaRc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 50) & 0x3);
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstDmnmxR
- {
- private ulong _opcode;
- public InstDmnmxR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstDmnmxI
- {
- private ulong _opcode;
- public InstDmnmxI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstDmnmxC
- {
- private ulong _opcode;
- public InstDmnmxC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstDmulR
- {
- private ulong _opcode;
- public InstDmulR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstDmulI
- {
- private ulong _opcode;
- public InstDmulI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstDmulC
- {
- private ulong _opcode;
- public InstDmulC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstDsetR
- {
- private ulong _opcode;
- public InstDsetR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsA => (_opcode & 0x40000000000000) != 0;
- public bool NegB => (_opcode & 0x20000000000000) != 0;
- public bool BVal => (_opcode & 0x10000000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstDsetI
- {
- private ulong _opcode;
- public InstDsetI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsA => (_opcode & 0x40000000000000) != 0;
- public bool NegB => (_opcode & 0x20000000000000) != 0;
- public bool BVal => (_opcode & 0x10000000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstDsetC
- {
- private ulong _opcode;
- public InstDsetC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsA => (_opcode & 0x40000000000000) != 0;
- public bool NegB => (_opcode & 0x20000000000000) != 0;
- public bool BVal => (_opcode & 0x10000000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstDsetpR
- {
- private ulong _opcode;
- public InstDsetpR(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool AbsA => (_opcode & 0x80) != 0;
- public bool NegB => (_opcode & 0x40) != 0;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- }
-
- struct InstDsetpI
- {
- private ulong _opcode;
- public InstDsetpI(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool AbsA => (_opcode & 0x80) != 0;
- public bool NegB => (_opcode & 0x40) != 0;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- }
-
- struct InstDsetpC
- {
- private ulong _opcode;
- public InstDsetpC(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool AbsA => (_opcode & 0x80) != 0;
- public bool NegB => (_opcode & 0x40) != 0;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- }
-
- struct InstExit
- {
- private ulong _opcode;
- public InstExit(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- public bool KeepRefCnt => (_opcode & 0x20) != 0;
- }
-
- struct InstF2fR
- {
- private ulong _opcode;
- public InstF2fR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
- public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
- public IntegerRound RoundMode => (IntegerRound)((int)((_opcode >> 40) & 0x4) | (int)((_opcode >> 39) & 0x3));
- public bool Sh => (_opcode & 0x20000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstF2fI
- {
- private ulong _opcode;
- public InstF2fI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
- public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
- public IntegerRound RoundMode => (IntegerRound)((int)((_opcode >> 40) & 0x4) | (int)((_opcode >> 39) & 0x3));
- public bool Sh => (_opcode & 0x20000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstF2fC
- {
- private ulong _opcode;
- public InstF2fC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
- public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
- public IntegerRound RoundMode => (IntegerRound)((int)((_opcode >> 40) & 0x4) | (int)((_opcode >> 39) & 0x3));
- public bool Sh => (_opcode & 0x20000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstF2iR
- {
- private ulong _opcode;
- public InstF2iR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public bool Sh => (_opcode & 0x20000000000) != 0;
- public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
- public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
- public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
- }
-
- struct InstF2iI
- {
- private ulong _opcode;
- public InstF2iI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public bool Sh => (_opcode & 0x20000000000) != 0;
- public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
- public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
- public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
- }
-
- struct InstF2iC
- {
- private ulong _opcode;
- public InstF2iC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public bool Sh => (_opcode & 0x20000000000) != 0;
- public IDstFmt IDstFmt => (IDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
- public DstFmt SrcFmt => (DstFmt)((_opcode >> 10) & 0x3);
- public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
- }
-
- struct InstFaddR
- {
- private ulong _opcode;
- public InstFaddR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- }
-
- struct InstFaddI
- {
- private ulong _opcode;
- public InstFaddI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- }
-
- struct InstFaddC
- {
- private ulong _opcode;
- public InstFaddC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- }
-
- struct InstFadd32i
- {
- private ulong _opcode;
- public InstFadd32i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x10000000000000) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- public bool AbsB => (_opcode & 0x200000000000000) != 0;
- public bool NegA => (_opcode & 0x100000000000000) != 0;
- public bool Ftz => (_opcode & 0x80000000000000) != 0;
- public bool AbsA => (_opcode & 0x40000000000000) != 0;
- public bool NegB => (_opcode & 0x20000000000000) != 0;
- }
-
- struct InstFchkR
- {
- private ulong _opcode;
- public InstFchkR(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
- }
-
- struct InstFchkI
- {
- private ulong _opcode;
- public InstFchkI(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
- }
-
- struct InstFchkC
- {
- private ulong _opcode;
- public InstFchkC(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
- }
-
- struct InstFcmpR
- {
- private ulong _opcode;
- public InstFcmpR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public bool Ftz => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstFcmpI
- {
- private ulong _opcode;
- public InstFcmpI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public bool Ftz => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstFcmpC
- {
- private ulong _opcode;
- public InstFcmpC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public bool Ftz => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstFcmpRc
- {
- private ulong _opcode;
- public InstFcmpRc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public bool Ftz => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstFfmaR
- {
- private ulong _opcode;
- public InstFfmaR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
- public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
- }
-
- struct InstFfmaI
- {
- private ulong _opcode;
- public InstFfmaI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
- public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
- }
-
- struct InstFfmaC
- {
- private ulong _opcode;
- public InstFfmaC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
- public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
- }
-
- struct InstFfmaRc
- {
- private ulong _opcode;
- public InstFfmaRc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 51) & 0x3);
- public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
- }
-
- struct InstFfma32i
- {
- private ulong _opcode;
- public InstFfma32i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm32 => (int)(_opcode >> 20);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegC => (_opcode & 0x200000000000000) != 0;
- public bool NegA => (_opcode & 0x100000000000000) != 0;
- public bool Sat => (_opcode & 0x80000000000000) != 0;
- public bool WriteCC => (_opcode & 0x10000000000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
- }
-
- struct InstFloR
- {
- private ulong _opcode;
- public InstFloR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public bool Sh => (_opcode & 0x20000000000) != 0;
- public bool NegB => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstFloI
- {
- private ulong _opcode;
- public InstFloI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public bool Sh => (_opcode & 0x20000000000) != 0;
- public bool NegB => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstFloC
- {
- private ulong _opcode;
- public InstFloC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public bool Sh => (_opcode & 0x20000000000) != 0;
- public bool NegB => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstFmnmxR
- {
- private ulong _opcode;
- public InstFmnmxR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstFmnmxI
- {
- private ulong _opcode;
- public InstFmnmxI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstFmnmxC
- {
- private ulong _opcode;
- public InstFmnmxC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstFmulR
- {
- private ulong _opcode;
- public InstFmulR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public Fmz Fmz => (Fmz)((_opcode >> 44) & 0x3);
- public MultiplyScale Scale => (MultiplyScale)((_opcode >> 41) & 0x7);
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstFmulI
- {
- private ulong _opcode;
- public InstFmulI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public Fmz Fmz => (Fmz)((_opcode >> 44) & 0x3);
- public MultiplyScale Scale => (MultiplyScale)((_opcode >> 41) & 0x7);
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstFmulC
- {
- private ulong _opcode;
- public InstFmulC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public Fmz Fmz => (Fmz)((_opcode >> 44) & 0x3);
- public MultiplyScale Scale => (MultiplyScale)((_opcode >> 41) & 0x7);
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstFmul32i
- {
- private ulong _opcode;
- public InstFmul32i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- public bool Sat => (_opcode & 0x80000000000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
- public bool WriteCC => (_opcode & 0x10000000000000) != 0;
- }
-
- struct InstFsetR
- {
- private ulong _opcode;
- public InstFsetR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x20000000000000) != 0;
- public bool AbsA => (_opcode & 0x40000000000000) != 0;
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool Ftz => (_opcode & 0x80000000000000) != 0;
- public bool BVal => (_opcode & 0x10000000000000) != 0;
- }
-
- struct InstFsetC
- {
- private ulong _opcode;
- public InstFsetC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x20000000000000) != 0;
- public bool AbsA => (_opcode & 0x40000000000000) != 0;
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool Ftz => (_opcode & 0x80000000000000) != 0;
- public bool BVal => (_opcode & 0x10000000000000) != 0;
- }
-
- struct InstFsetI
- {
- private ulong _opcode;
- public InstFsetI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x20000000000000) != 0;
- public bool AbsA => (_opcode & 0x40000000000000) != 0;
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool Ftz => (_opcode & 0x80000000000000) != 0;
- public bool BVal => (_opcode & 0x10000000000000) != 0;
- }
-
- struct InstFsetpR
- {
- private ulong _opcode;
- public InstFsetpR(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x40) != 0;
- public bool AbsA => (_opcode & 0x80) != 0;
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool Ftz => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstFsetpI
- {
- private ulong _opcode;
- public InstFsetpI(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x40) != 0;
- public bool AbsA => (_opcode & 0x80) != 0;
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool Ftz => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstFsetpC
- {
- private ulong _opcode;
- public InstFsetpC(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x40) != 0;
- public bool AbsA => (_opcode & 0x80) != 0;
- public bool AbsB => (_opcode & 0x100000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 48) & 0xF);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool Ftz => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstFswzadd
- {
- private ulong _opcode;
- public InstFswzadd(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Ftz => (_opcode & 0x100000000000) != 0;
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public bool Ndv => (_opcode & 0x4000000000) != 0;
- public int PnWord => (int)((_opcode >> 28) & 0xFF);
- }
-
- struct InstGetcrsptr
- {
- private ulong _opcode;
- public InstGetcrsptr(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- }
-
- struct InstGetlmembase
- {
- private ulong _opcode;
- public InstGetlmembase(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- }
-
- struct InstHadd2R
- {
- private ulong _opcode;
- public InstHadd2R(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x80000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool AbsB => (_opcode & 0x40000000) != 0;
- public bool Sat => (_opcode & 0x100000000) != 0;
- public bool Ftz => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstHadd2I
- {
- private ulong _opcode;
- public InstHadd2I(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
- public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool Sat => (_opcode & 0x10000000000000) != 0;
- public bool Ftz => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstHadd2C
- {
- private ulong _opcode;
- public InstHadd2C(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x100000000000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool AbsB => (_opcode & 0x40000000000000) != 0;
- public bool Sat => (_opcode & 0x10000000000000) != 0;
- public bool Ftz => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstHadd232i
- {
- private ulong _opcode;
- public InstHadd232i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm => (int)(_opcode >> 20);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x100000000000000) != 0;
- public bool Sat => (_opcode & 0x10000000000000) != 0;
- public bool Ftz => (_opcode & 0x80000000000000) != 0;
- }
-
- struct InstHfma2R
- {
- private ulong _opcode;
- public InstHfma2R(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
- public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 35) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000) != 0;
- public bool NegC => (_opcode & 0x40000000) != 0;
- public bool Sat => (_opcode & 0x100000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 37) & 0x3);
- }
-
- struct InstHfma2I
- {
- private ulong _opcode;
- public InstHfma2I(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
- public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegC => (_opcode & 0x8000000000000) != 0;
- public bool Sat => (_opcode & 0x10000000000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
- }
-
- struct InstHfma2C
- {
- private ulong _opcode;
- public InstHfma2C(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x100000000000000) != 0;
- public bool NegC => (_opcode & 0x8000000000000) != 0;
- public bool Sat => (_opcode & 0x10000000000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
- }
-
- struct InstHfma2Rc
- {
- private ulong _opcode;
- public InstHfma2Rc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public HalfSwizzle CSwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x100000000000000) != 0;
- public bool NegC => (_opcode & 0x8000000000000) != 0;
- public bool Sat => (_opcode & 0x10000000000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
- }
-
- struct InstHfma232i
- {
- private ulong _opcode;
- public InstHfma232i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm => (int)(_opcode >> 20);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegC => (_opcode & 0x8000000000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
- }
-
- struct InstHmul2R
- {
- private ulong _opcode;
- public InstHmul2R(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool AbsB => (_opcode & 0x40000000) != 0;
- public bool Sat => (_opcode & 0x100000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
- }
-
- struct InstHmul2I
- {
- private ulong _opcode;
- public InstHmul2I(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
- public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool Sat => (_opcode & 0x10000000000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
- }
-
- struct InstHmul2C
- {
- private ulong _opcode;
- public InstHmul2C(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public OFmt OFmt => (OFmt)((_opcode >> 49) & 0x3);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool AbsB => (_opcode & 0x40000000000000) != 0;
- public bool Sat => (_opcode & 0x10000000000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
- }
-
- struct InstHmul232i
- {
- private ulong _opcode;
- public InstHmul232i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm32 => (int)(_opcode >> 20);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 53) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Sat => (_opcode & 0x10000000000000) != 0;
- public Fmz Fmz => (Fmz)((_opcode >> 55) & 0x3);
- }
-
- struct InstHset2R
- {
- private ulong _opcode;
- public InstHset2R(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool NegB => (_opcode & 0x80000000) != 0;
- public bool AbsB => (_opcode & 0x40000000) != 0;
- public bool Bval => (_opcode & 0x2000000000000) != 0;
- public FComp Cmp => (FComp)((_opcode >> 35) & 0xF);
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public bool Ftz => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstHset2I
- {
- private ulong _opcode;
- public InstHset2I(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
- public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool Bval => (_opcode & 0x20000000000000) != 0;
- public FComp Cmp => (FComp)((_opcode >> 49) & 0xF);
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public bool Ftz => (_opcode & 0x40000000000000) != 0;
- }
-
- struct InstHset2C
- {
- private ulong _opcode;
- public InstHset2C(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool NegB => (_opcode & 0x100000000000000) != 0;
- public bool Bval => (_opcode & 0x20000000000000) != 0;
- public FComp Cmp => (FComp)((_opcode >> 49) & 0xF);
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public bool Ftz => (_opcode & 0x40000000000000) != 0;
- }
-
- struct InstHsetp2R
- {
- private ulong _opcode;
- public InstHsetp2R(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x80000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool AbsB => (_opcode & 0x40000000) != 0;
- public FComp FComp2 => (FComp)((_opcode >> 35) & 0xF);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool Ftz => (_opcode & 0x40) != 0;
- public bool HAnd => (_opcode & 0x2000000000000) != 0;
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
- }
-
- struct InstHsetp2I
- {
- private ulong _opcode;
- public InstHsetp2I(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int BimmH0 => (int)((_opcode >> 20) & 0x3FF);
- public int BimmH1 => (int)((_opcode >> 47) & 0x200) | (int)((_opcode >> 30) & 0x1FF);
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 49) & 0xF);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool Ftz => (_opcode & 0x40) != 0;
- public bool HAnd => (_opcode & 0x20000000000000) != 0;
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- }
-
- struct InstHsetp2C
- {
- private ulong _opcode;
- public InstHsetp2C(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegA => (_opcode & 0x80000000000) != 0;
- public bool NegB => (_opcode & 0x100000000000000) != 0;
- public bool AbsA => (_opcode & 0x100000000000) != 0;
- public bool AbsB => (_opcode & 0x40000000000000) != 0;
- public FComp FComp => (FComp)((_opcode >> 49) & 0xF);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool Ftz => (_opcode & 0x40) != 0;
- public bool HAnd => (_opcode & 0x20000000000000) != 0;
- public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
- }
-
- struct InstI2fR
- {
- private ulong _opcode;
- public InstI2fR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public ISrcFmt ISrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
- public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
- }
-
- struct InstI2fI
- {
- private ulong _opcode;
- public InstI2fI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public ISrcFmt ISrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
- public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
- }
-
- struct InstI2fC
- {
- private ulong _opcode;
- public InstI2fC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
- public ISrcFmt ISrcFmt => (ISrcFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
- public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
- }
-
- struct InstI2iR
- {
- private ulong _opcode;
- public InstI2iR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public ISrcDstFmt IDstFmt => (ISrcDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
- public ISrcDstFmt ISrcFmt => (ISrcDstFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
- }
-
- struct InstI2iI
- {
- private ulong _opcode;
- public InstI2iI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public ISrcDstFmt IDstFmt => (ISrcDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
- public ISrcDstFmt ISrcFmt => (ISrcDstFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
- }
-
- struct InstI2iC
- {
- private ulong _opcode;
- public InstI2iC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public ISrcDstFmt IDstFmt => (ISrcDstFmt)((int)((_opcode >> 10) & 0x4) | (int)((_opcode >> 8) & 0x3));
- public ISrcDstFmt ISrcFmt => (ISrcDstFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
- }
-
- struct InstIaddR
- {
- private ulong _opcode;
- public InstIaddR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- }
-
- struct InstIaddI
- {
- private ulong _opcode;
- public InstIaddI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- }
-
- struct InstIaddC
- {
- private ulong _opcode;
- public InstIaddC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- }
-
- struct InstIadd32i
- {
- private ulong _opcode;
- public InstIadd32i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- public AvgMode AvgMode => (AvgMode)((_opcode >> 55) & 0x3);
- public bool Sat => (_opcode & 0x40000000000000) != 0;
- public bool WriteCC => (_opcode & 0x10000000000000) != 0;
- public bool X => (_opcode & 0x20000000000000) != 0;
- }
-
- struct InstIadd3R
- {
- private ulong _opcode;
- public InstIadd3R(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x8000000000000) != 0;
- public bool NegB => (_opcode & 0x4000000000000) != 0;
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool X => (_opcode & 0x1000000000000) != 0;
- public Lrs Lrs => (Lrs)((_opcode >> 37) & 0x3);
- public HalfSelect Apart => (HalfSelect)((_opcode >> 35) & 0x3);
- public HalfSelect Bpart => (HalfSelect)((_opcode >> 33) & 0x3);
- public HalfSelect Cpart => (HalfSelect)((_opcode >> 31) & 0x3);
- }
-
- struct InstIadd3I
- {
- private ulong _opcode;
- public InstIadd3I(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x8000000000000) != 0;
- public bool NegB => (_opcode & 0x4000000000000) != 0;
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool X => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstIadd3C
- {
- private ulong _opcode;
- public InstIadd3C(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool NegA => (_opcode & 0x8000000000000) != 0;
- public bool NegB => (_opcode & 0x4000000000000) != 0;
- public bool NegC => (_opcode & 0x2000000000000) != 0;
- public bool X => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstIcmpR
- {
- private ulong _opcode;
- public InstIcmpR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstIcmpI
- {
- private ulong _opcode;
- public InstIcmpI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstIcmpC
- {
- private ulong _opcode;
- public InstIcmpC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstIcmpRc
- {
- private ulong _opcode;
- public InstIcmpRc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstIde
- {
- private ulong _opcode;
- public InstIde(ulong opcode) => _opcode = opcode;
- public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
- public bool Di => (_opcode & 0x20) != 0;
- }
-
- struct InstIdpR
- {
- private ulong _opcode;
- public InstIdpR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool IsHi => (_opcode & 0x4000000000000) != 0;
- public bool SrcASign => (_opcode & 0x2000000000000) != 0;
- public bool IsDp => (_opcode & 0x1000000000000) != 0;
- public bool SrcBSign => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstIdpC
- {
- private ulong _opcode;
- public InstIdpC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool IsHi => (_opcode & 0x4000000000000) != 0;
- public bool SrcASign => (_opcode & 0x2000000000000) != 0;
- public bool IsDp => (_opcode & 0x1000000000000) != 0;
- public bool SrcBSign => (_opcode & 0x800000000000) != 0;
- }
-
- struct InstImadR
- {
- private ulong _opcode;
- public InstImadR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Hilo => (_opcode & 0x40000000000000) != 0;
- public bool BSigned => (_opcode & 0x20000000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool X => (_opcode & 0x2000000000000) != 0;
- public bool ASigned => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstImadI
- {
- private ulong _opcode;
- public InstImadI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Hilo => (_opcode & 0x40000000000000) != 0;
- public bool BSigned => (_opcode & 0x20000000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool X => (_opcode & 0x2000000000000) != 0;
- public bool ASigned => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstImadC
- {
- private ulong _opcode;
- public InstImadC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Hilo => (_opcode & 0x40000000000000) != 0;
- public bool BSigned => (_opcode & 0x20000000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool X => (_opcode & 0x2000000000000) != 0;
- public bool ASigned => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstImadRc
- {
- private ulong _opcode;
- public InstImadRc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Hilo => (_opcode & 0x40000000000000) != 0;
- public bool BSigned => (_opcode & 0x20000000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 51) & 0x3);
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool X => (_opcode & 0x2000000000000) != 0;
- public bool ASigned => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstImad32i
- {
- private ulong _opcode;
- public InstImad32i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- public bool BSigned => (_opcode & 0x200000000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 55) & 0x3);
- public bool ASigned => (_opcode & 0x40000000000000) != 0;
- public bool WriteCC => (_opcode & 0x10000000000000) != 0;
- public bool Hilo => (_opcode & 0x20000000000000) != 0;
- }
-
- struct InstImadspR
- {
- private ulong _opcode;
- public InstImadspR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
- public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
- public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
- }
-
- struct InstImadspI
- {
- private ulong _opcode;
- public InstImadspI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
- public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
- public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
- }
-
- struct InstImadspC
- {
- private ulong _opcode;
- public InstImadspC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
- public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
- public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
- }
-
- struct InstImadspRc
- {
- private ulong _opcode;
- public InstImadspRc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ImadspASelect ASelect => (ImadspASelect)((_opcode >> 48) & 0x7);
- public ImadspBSelect BSelect => (ImadspBSelect)((_opcode >> 53) & 0x3);
- public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
- }
-
- struct InstImnmxR
- {
- private ulong _opcode;
- public InstImnmxR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstImnmxI
- {
- private ulong _opcode;
- public InstImnmxI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstImnmxC
- {
- private ulong _opcode;
- public InstImnmxC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstImulR
- {
- private ulong _opcode;
- public InstImulR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool ASigned => (_opcode & 0x10000000000) != 0;
- public bool BSigned => (_opcode & 0x20000000000) != 0;
- public bool Hilo => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstImulI
- {
- private ulong _opcode;
- public InstImulI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool ASigned => (_opcode & 0x10000000000) != 0;
- public bool BSigned => (_opcode & 0x20000000000) != 0;
- public bool Hilo => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstImulC
- {
- private ulong _opcode;
- public InstImulC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool ASigned => (_opcode & 0x10000000000) != 0;
- public bool BSigned => (_opcode & 0x20000000000) != 0;
- public bool Hilo => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstImul32i
- {
- private ulong _opcode;
- public InstImul32i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- public bool ASigned => (_opcode & 0x40000000000000) != 0;
- public bool BSigned => (_opcode & 0x80000000000000) != 0;
- public bool Hilo => (_opcode & 0x20000000000000) != 0;
- public bool WriteCC => (_opcode & 0x10000000000000) != 0;
- }
-
- struct InstIpa
- {
- private ulong _opcode;
- public InstIpa(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public IpaOp IpaOp => (IpaOp)((_opcode >> 54) & 0x3);
- public int Msi => (int)((_opcode >> 52) & 0x3);
- public bool Sat => (_opcode & 0x8000000000000) != 0;
- public bool Idx => (_opcode & 0x4000000000) != 0;
- public int Imm10 => (int)((_opcode >> 28) & 0x3FF);
- public int SrcPred => (int)((_opcode >> 47) & 0x7);
- public bool SrcPredInv => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstIsberd
- {
- private ulong _opcode;
- public InstIsberd(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public AlSize AlSize => (AlSize)((_opcode >> 47) & 0x3);
- public IBase IBase => (IBase)((_opcode >> 33) & 0x3);
- public bool O => (_opcode & 0x100000000) != 0;
- public bool P => (_opcode & 0x80000000) != 0;
- }
-
- struct InstIscaddR
- {
- private ulong _opcode;
- public InstIscaddR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public int Imm5 => (int)((_opcode >> 39) & 0x1F);
- public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
- }
-
- struct InstIscaddI
- {
- private ulong _opcode;
- public InstIscaddI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public int Imm5 => (int)((_opcode >> 39) & 0x1F);
- public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
- }
-
- struct InstIscaddC
- {
- private ulong _opcode;
- public InstIscaddC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public int Imm5 => (int)((_opcode >> 39) & 0x1F);
- public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
- }
-
- struct InstIscadd32i
- {
- private ulong _opcode;
- public InstIscadd32i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- public bool WriteCC => (_opcode & 0x10000000000000) != 0;
- public int Imm5 => (int)((_opcode >> 53) & 0x1F);
- }
-
- struct InstIsetR
- {
- private ulong _opcode;
- public InstIsetR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public bool BVal => (_opcode & 0x100000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- }
-
- struct InstIsetI
- {
- private ulong _opcode;
- public InstIsetI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public bool BVal => (_opcode & 0x100000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- }
-
- struct InstIsetC
- {
- private ulong _opcode;
- public InstIsetC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public bool BVal => (_opcode & 0x100000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- }
-
- struct InstIsetpR
- {
- private ulong _opcode;
- public InstIsetpR(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- }
-
- struct InstIsetpI
- {
- private ulong _opcode;
- public InstIsetpI(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- }
-
- struct InstIsetpC
- {
- private ulong _opcode;
- public InstIsetpC(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public IComp IComp => (IComp)((_opcode >> 49) & 0x7);
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- }
-
- struct InstJcal
- {
- private ulong _opcode;
- public InstJcal(ulong opcode) => _opcode = opcode;
- public int Imm32 => (int)(_opcode >> 20);
- public bool Ca => (_opcode & 0x20) != 0;
- public bool Inc => (_opcode & 0x40) != 0;
- }
-
- struct InstJmp
- {
- private ulong _opcode;
- public InstJmp(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- public bool Ca => (_opcode & 0x20) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- public bool Lmt => (_opcode & 0x40) != 0;
- public bool U => (_opcode & 0x80) != 0;
- }
-
- struct InstJmx
- {
- private ulong _opcode;
- public InstJmx(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- public bool Ca => (_opcode & 0x20) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- public bool Lmt => (_opcode & 0x40) != 0;
- }
-
- struct InstKil
- {
- private ulong _opcode;
- public InstKil(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- }
-
- struct InstLd
- {
- private ulong _opcode;
- public InstLd(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int SrcPred => (int)((_opcode >> 58) & 0x7);
- public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 56) & 0x3);
- public LsSize LsSize => (LsSize)((_opcode >> 53) & 0x7);
- public bool E => (_opcode & 0x10000000000000) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- }
-
- struct InstLdc
- {
- private ulong _opcode;
- public InstLdc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
- public AddressMode AddressMode => (AddressMode)((_opcode >> 44) & 0x3);
- public int CbufSlot => (int)((_opcode >> 36) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0xFFFF);
- }
-
- struct InstLdg
- {
- private ulong _opcode;
- public InstLdg(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public LsSize LsSize => (LsSize)((_opcode >> 48) & 0x7);
- public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 46) & 0x3);
- public bool E => (_opcode & 0x200000000000) != 0;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- }
-
- struct InstLdl
- {
- private ulong _opcode;
- public InstLdl(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
- public CacheOp2 CacheOp => (CacheOp2)((_opcode >> 44) & 0x3);
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- }
-
- struct InstLds
- {
- private ulong _opcode;
- public InstLds(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
- public bool U => (_opcode & 0x100000000000) != 0;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- }
-
- struct InstLeaR
- {
- private ulong _opcode;
- public InstLeaR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x400000000000) != 0;
- public bool NegA => (_opcode & 0x200000000000) != 0;
- public int ImmU5 => (int)((_opcode >> 39) & 0x1F);
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- }
-
- struct InstLeaI
- {
- private ulong _opcode;
- public InstLeaI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x400000000000) != 0;
- public bool NegA => (_opcode & 0x200000000000) != 0;
- public int ImmU5 => (int)((_opcode >> 39) & 0x1F);
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- }
-
- struct InstLeaC
- {
- private ulong _opcode;
- public InstLeaC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x400000000000) != 0;
- public bool NegA => (_opcode & 0x200000000000) != 0;
- public int ImmU5 => (int)((_opcode >> 39) & 0x1F);
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- }
-
- struct InstLeaHiR
- {
- private ulong _opcode;
- public InstLeaHiR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x4000000000) != 0;
- public bool NegA => (_opcode & 0x2000000000) != 0;
- public int ImmU5 => (int)((_opcode >> 28) & 0x1F);
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- }
-
- struct InstLeaHiC
- {
- private ulong _opcode;
- public InstLeaHiC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x200000000000000) != 0;
- public bool NegA => (_opcode & 0x100000000000000) != 0;
- public int ImmU5 => (int)((_opcode >> 51) & 0x1F);
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- }
-
- struct InstLepc
- {
- private ulong _opcode;
- public InstLepc(ulong opcode) => _opcode = opcode;
- }
-
- struct InstLongjmp
- {
- private ulong _opcode;
- public InstLongjmp(ulong opcode) => _opcode = opcode;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- }
-
- struct InstLopR
- {
- private ulong _opcode;
- public InstLopR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 44) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- public LogicOp Lop => (LogicOp)((_opcode >> 41) & 0x3);
- public bool NegA => (_opcode & 0x8000000000) != 0;
- public bool NegB => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstLopI
- {
- private ulong _opcode;
- public InstLopI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 44) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- public LogicOp LogicOp => (LogicOp)((_opcode >> 41) & 0x3);
- public bool NegA => (_opcode & 0x8000000000) != 0;
- public bool NegB => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstLopC
- {
- private ulong _opcode;
- public InstLopC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 44) & 0x3);
- public bool X => (_opcode & 0x80000000000) != 0;
- public LogicOp LogicOp => (LogicOp)((_opcode >> 41) & 0x3);
- public bool NegA => (_opcode & 0x8000000000) != 0;
- public bool NegB => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstLop3R
- {
- private ulong _opcode;
- public InstLop3R(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- public PredicateOp PredicateOp => (PredicateOp)((_opcode >> 36) & 0x3);
- public bool X => (_opcode & 0x4000000000) != 0;
- public int Imm => (int)((_opcode >> 28) & 0xFF);
- }
-
- struct InstLop3I
- {
- private ulong _opcode;
- public InstLop3I(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x200000000000000) != 0;
- public int Imm => (int)((_opcode >> 48) & 0xFF);
- }
-
- struct InstLop3C
- {
- private ulong _opcode;
- public InstLop3C(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x100000000000000) != 0;
- public int Imm => (int)((_opcode >> 48) & 0xFF);
- }
-
- struct InstLop32i
- {
- private ulong _opcode;
- public InstLop32i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x10000000000000) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- public bool X => (_opcode & 0x200000000000000) != 0;
- public LogicOp LogicOp => (LogicOp)((_opcode >> 53) & 0x3);
- public bool NegA => (_opcode & 0x80000000000000) != 0;
- public bool NegB => (_opcode & 0x100000000000000) != 0;
- }
-
- struct InstMembar
- {
- private ulong _opcode;
- public InstMembar(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Membar Membar => (Membar)((_opcode >> 8) & 0x3);
- public Ivall Ivall => (Ivall)((_opcode >> 0) & 0x3);
- }
-
- struct InstMovR
- {
- private ulong _opcode;
- public InstMovR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int QuadMask => (int)((_opcode >> 39) & 0xF);
- }
-
- struct InstMovI
- {
- private ulong _opcode;
- public InstMovI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int QuadMask => (int)((_opcode >> 39) & 0xF);
- }
-
- struct InstMovC
- {
- private ulong _opcode;
- public InstMovC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int QuadMask => (int)((_opcode >> 39) & 0xF);
- }
-
- struct InstMov32i
- {
- private ulong _opcode;
- public InstMov32i(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Imm32 => (int)(_opcode >> 20);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int QuadMask => (int)((_opcode >> 12) & 0xF);
- }
-
- struct InstMufu
- {
- private ulong _opcode;
- public InstMufu(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public MufuOp MufuOp => (MufuOp)((_opcode >> 20) & 0xF);
- public bool AbsA => (_opcode & 0x400000000000) != 0;
- public bool NegA => (_opcode & 0x1000000000000) != 0;
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstNop
- {
- private ulong _opcode;
- public InstNop(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
- public bool Trig => (_opcode & 0x2000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
- }
-
- struct InstOutR
- {
- private ulong _opcode;
- public InstOutR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
- }
-
- struct InstOutI
- {
- private ulong _opcode;
- public InstOutI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
- }
-
- struct InstOutC
- {
- private ulong _opcode;
- public InstOutC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
- }
-
- struct InstP2rR
- {
- private ulong _opcode;
- public InstP2rR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public bool Ccpr => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstP2rI
- {
- private ulong _opcode;
- public InstP2rI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public bool Ccpr => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstP2rC
- {
- private ulong _opcode;
- public InstP2rC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public bool Ccpr => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstPbk
- {
- private ulong _opcode;
- public InstPbk(ulong opcode) => _opcode = opcode;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- public bool Ca => (_opcode & 0x20) != 0;
- }
-
- struct InstPcnt
- {
- private ulong _opcode;
- public InstPcnt(ulong opcode) => _opcode = opcode;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- public bool Ca => (_opcode & 0x20) != 0;
- }
-
- struct InstPexit
- {
- private ulong _opcode;
- public InstPexit(ulong opcode) => _opcode = opcode;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- }
-
- struct InstPixld
- {
- private ulong _opcode;
- public InstPixld(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int DestPred => (int)((_opcode >> 45) & 0x7);
- public PixMode PixMode => (PixMode)((_opcode >> 31) & 0x7);
- public int Imm8 => (int)((_opcode >> 20) & 0xFF);
- }
-
- struct InstPlongjmp
- {
- private ulong _opcode;
- public InstPlongjmp(ulong opcode) => _opcode = opcode;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- public bool Ca => (_opcode & 0x20) != 0;
- }
-
- struct InstPopcR
- {
- private ulong _opcode;
- public InstPopcR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegB => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstPopcI
- {
- private ulong _opcode;
- public InstPopcI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegB => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstPopcC
- {
- private ulong _opcode;
- public InstPopcC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool NegB => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstPret
- {
- private ulong _opcode;
- public InstPret(ulong opcode) => _opcode = opcode;
- public bool Ca => (_opcode & 0x20) != 0;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- public bool Inc => (_opcode & 0x40) != 0;
- }
-
- struct InstPrmtR
- {
- private ulong _opcode;
- public InstPrmtR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
- }
-
- struct InstPrmtI
- {
- private ulong _opcode;
- public InstPrmtI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
- }
-
- struct InstPrmtC
- {
- private ulong _opcode;
- public InstPrmtC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
- }
-
- struct InstPrmtRc
- {
- private ulong _opcode;
- public InstPrmtRc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
- }
-
- struct InstPset
- {
- private ulong _opcode;
- public InstPset(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public int Src2Pred => (int)((_opcode >> 12) & 0x7);
- public bool Src2PredInv => (_opcode & 0x8000) != 0;
- public int Src1Pred => (int)((_opcode >> 29) & 0x7);
- public bool Src1PredInv => (_opcode & 0x100000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp BoolOpAB => (BoolOp)((_opcode >> 24) & 0x3);
- public BoolOp BoolOpC => (BoolOp)((_opcode >> 45) & 0x3);
- public bool BVal => (_opcode & 0x100000000000) != 0;
- }
-
- struct InstPsetp
- {
- private ulong _opcode;
- public InstPsetp(ulong opcode) => _opcode = opcode;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- public int Src2Pred => (int)((_opcode >> 12) & 0x7);
- public bool Src2PredInv => (_opcode & 0x8000) != 0;
- public int Src1Pred => (int)((_opcode >> 29) & 0x7);
- public bool Src1PredInv => (_opcode & 0x100000000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public BoolOp BoolOpAB => (BoolOp)((_opcode >> 24) & 0x3);
- public BoolOp BoolOpC => (BoolOp)((_opcode >> 45) & 0x3);
- }
-
- struct InstR2b
- {
- private ulong _opcode;
- public InstR2b(ulong opcode) => _opcode = opcode;
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public BarMode Mode => (BarMode)((_opcode >> 32) & 0x3);
- public int Name => (int)((_opcode >> 28) & 0xF);
- }
-
- struct InstR2pR
- {
- private ulong _opcode;
- public InstR2pR(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public bool Ccpr => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstR2pI
- {
- private ulong _opcode;
- public InstR2pI(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public bool Ccpr => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstR2pC
- {
- private ulong _opcode;
- public InstR2pC(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ByteSel ByteSel => (ByteSel)((_opcode >> 41) & 0x3);
- public bool Ccpr => (_opcode & 0x10000000000) != 0;
- }
-
- struct InstRam
- {
- private ulong _opcode;
- public InstRam(ulong opcode) => _opcode = opcode;
- }
-
- struct InstRed
- {
- private ulong _opcode;
- public InstRed(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 0) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm20 => (int)((_opcode >> 28) & 0xFFFFF);
- public AtomSize RedSize => (AtomSize)((_opcode >> 20) & 0x7);
- public RedOp RedOp => (RedOp)((_opcode >> 23) & 0x7);
- public bool E => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstRet
- {
- private ulong _opcode;
- public InstRet(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- }
-
- struct InstRroR
- {
- private ulong _opcode;
- public InstRroR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool RroOp => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstRroI
- {
- private ulong _opcode;
- public InstRroI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool RroOp => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstRroC
- {
- private ulong _opcode;
- public InstRroC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool AbsB => (_opcode & 0x2000000000000) != 0;
- public bool NegB => (_opcode & 0x200000000000) != 0;
- public bool RroOp => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstRtt
- {
- private ulong _opcode;
- public InstRtt(ulong opcode) => _opcode = opcode;
- }
-
- struct InstS2r
- {
- private ulong _opcode;
- public InstS2r(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public SReg SReg => (SReg)((_opcode >> 20) & 0xFF);
- }
-
- struct InstSam
- {
- private ulong _opcode;
- public InstSam(ulong opcode) => _opcode = opcode;
- }
-
- struct InstSelR
- {
- private ulong _opcode;
- public InstSelR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstSelI
- {
- private ulong _opcode;
- public InstSelI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstSelC
- {
- private ulong _opcode;
- public InstSelC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- }
-
- struct InstSetcrsptr
- {
- private ulong _opcode;
- public InstSetcrsptr(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- }
-
- struct InstSetlmembase
- {
- private ulong _opcode;
- public InstSetlmembase(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- }
-
- struct InstShfLR
- {
- private ulong _opcode;
- public InstShfLR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool M => (_opcode & 0x4000000000000) != 0;
- public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
- public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
- }
-
- struct InstShfRR
- {
- private ulong _opcode;
- public InstShfRR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool M => (_opcode & 0x4000000000000) != 0;
- public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
- public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
- }
-
- struct InstShfLI
- {
- private ulong _opcode;
- public InstShfLI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool M => (_opcode & 0x4000000000000) != 0;
- public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
- public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
- public int Imm6 => (int)((_opcode >> 20) & 0x3F);
- }
-
- struct InstShfRI
- {
- private ulong _opcode;
- public InstShfRI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool M => (_opcode & 0x4000000000000) != 0;
- public XModeShf XModeShf => (XModeShf)((_opcode >> 48) & 0x3);
- public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
- public int Imm6 => (int)((_opcode >> 20) & 0x3F);
- }
-
- struct InstShfl
- {
- private ulong _opcode;
- public InstShfl(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int SrcBImm => (int)((_opcode >> 20) & 0x1F);
- public int SrcCImm => (int)((_opcode >> 34) & 0x1FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public ShflMode ShflMode => (ShflMode)((_opcode >> 30) & 0x3);
- public bool CFixShfl => (_opcode & 0x20000000) != 0;
- public bool BFixShfl => (_opcode & 0x10000000) != 0;
- public int DestPred => (int)((_opcode >> 48) & 0x7);
- }
-
- struct InstShlR
- {
- private ulong _opcode;
- public InstShlR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x80000000000) != 0;
- public bool M => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstShlI
- {
- private ulong _opcode;
- public InstShlI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x80000000000) != 0;
- public bool M => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstShlC
- {
- private ulong _opcode;
- public InstShlC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x80000000000) != 0;
- public bool M => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstShrR
- {
- private ulong _opcode;
- public InstShrR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
- public bool Brev => (_opcode & 0x10000000000) != 0;
- public bool M => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstShrI
- {
- private ulong _opcode;
- public InstShrI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
- public bool Brev => (_opcode & 0x10000000000) != 0;
- public bool M => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstShrC
- {
- private ulong _opcode;
- public InstShrC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Signed => (_opcode & 0x1000000000000) != 0;
- public XMode XMode => (XMode)((_opcode >> 43) & 0x3);
- public bool Brev => (_opcode & 0x10000000000) != 0;
- public bool M => (_opcode & 0x8000000000) != 0;
- }
-
- struct InstSsy
- {
- private ulong _opcode;
- public InstSsy(ulong opcode) => _opcode = opcode;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- public bool Ca => (_opcode & 0x20) != 0;
- }
-
- struct InstSt
- {
- private ulong _opcode;
- public InstSt(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int SrcPred => (int)((_opcode >> 58) & 0x7);
- public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 56) & 0x3);
- public LsSize LsSize => (LsSize)((_opcode >> 53) & 0x7);
- public bool E => (_opcode & 0x10000000000000) != 0;
- public int Imm32 => (int)(_opcode >> 20);
- }
-
- struct InstStg
- {
- private ulong _opcode;
- public InstStg(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
- public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 46) & 0x3);
- public bool E => (_opcode & 0x200000000000) != 0;
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- }
-
- struct InstStl
- {
- private ulong _opcode;
- public InstStl(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
- public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 44) & 0x3);
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- }
-
- struct InstStp
- {
- private ulong _opcode;
- public InstStp(ulong opcode) => _opcode = opcode;
- public bool Wait => (_opcode & 0x80000000) != 0;
- public int Imm8 => (int)((_opcode >> 20) & 0xFF);
- }
-
- struct InstSts
- {
- private ulong _opcode;
- public InstSts(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public LsSize2 LsSize => (LsSize2)((_opcode >> 48) & 0x7);
- public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
- }
-
- struct InstSuatomB
- {
- private ulong _opcode;
- public InstSuatomB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public SuatomSize Size => (SuatomSize)((_opcode >> 36) & 0x7);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public SuatomOp Op => (SuatomOp)((_opcode >> 29) & 0xF);
- public bool Ba => (_opcode & 0x10000000) != 0;
- }
-
- struct InstSuatom
- {
- private ulong _opcode;
- public InstSuatom(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public SuatomSize Size => (SuatomSize)((_opcode >> 51) & 0x7);
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public SuatomOp Op => (SuatomOp)((_opcode >> 29) & 0xF);
- public bool Ba => (_opcode & 0x10000000) != 0;
- }
-
- struct InstSuatomB2
- {
- private ulong _opcode;
- public InstSuatomB2(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int DestPred => (int)((_opcode >> 51) & 0x7);
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public SuatomSize Size => (SuatomSize)((_opcode >> 36) & 0x7);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public SuatomOp Op => (SuatomOp)((_opcode >> 29) & 0xF);
- public bool Ba => (_opcode & 0x10000000) != 0;
- }
-
- struct InstSuatomCasB
- {
- private ulong _opcode;
- public InstSuatomCasB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public SuatomSize Size => (SuatomSize)((_opcode >> 36) & 0x7);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public int DestPred => (int)((_opcode >> 30) & 0x7);
- public bool Ba => (_opcode & 0x10000000) != 0;
- }
-
- struct InstSuatomCas
- {
- private ulong _opcode;
- public InstSuatomCas(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public SuatomSize Size => (SuatomSize)((_opcode >> 51) & 0x7);
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public int DestPred => (int)((_opcode >> 30) & 0x7);
- public bool Ba => (_opcode & 0x10000000) != 0;
- }
-
- struct InstSuldDB
- {
- private ulong _opcode;
- public InstSuldDB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public int DestPred2 => (int)((_opcode >> 30) & 0x7);
- public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 24) & 0x3);
- public bool Ba => (_opcode & 0x800000) != 0;
- public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
- }
-
- struct InstSuldD
- {
- private ulong _opcode;
- public InstSuldD(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public int DestPred2 => (int)((_opcode >> 30) & 0x7);
- public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 24) & 0x3);
- public bool Ba => (_opcode & 0x800000) != 0;
- public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
- }
-
- struct InstSuldB
- {
- private ulong _opcode;
- public InstSuldB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public int DestPred2 => (int)((_opcode >> 30) & 0x7);
- public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 24) & 0x3);
- public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
- }
-
- struct InstSuld
- {
- private ulong _opcode;
- public InstSuld(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public int DestPred2 => (int)((_opcode >> 30) & 0x7);
- public CacheOpLd CacheOp => (CacheOpLd)((_opcode >> 24) & 0x3);
- public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
- }
-
- struct InstSuredB
- {
- private ulong _opcode;
- public InstSuredB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public RedOp Op => (RedOp)((_opcode >> 24) & 0x7);
- public bool Ba => (_opcode & 0x800000) != 0;
- public SuatomSize Size => (SuatomSize)((_opcode >> 20) & 0x7);
- }
-
- struct InstSured
- {
- private ulong _opcode;
- public InstSured(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public RedOp Op => (RedOp)((_opcode >> 24) & 0x7);
- public bool Ba => (_opcode & 0x800000) != 0;
- public SuatomSize Size => (SuatomSize)((_opcode >> 20) & 0x7);
- }
-
- struct InstSustDB
- {
- private ulong _opcode;
- public InstSustDB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 24) & 0x3);
- public bool Ba => (_opcode & 0x800000) != 0;
- public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
- }
-
- struct InstSustD
- {
- private ulong _opcode;
- public InstSustD(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 24) & 0x3);
- public bool Ba => (_opcode & 0x800000) != 0;
- public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
- }
-
- struct InstSustB
- {
- private ulong _opcode;
- public InstSustB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 24) & 0x3);
- public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
- }
-
- struct InstSust
- {
- private ulong _opcode;
- public InstSust(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Clamp Clamp => (Clamp)((_opcode >> 49) & 0x3);
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public SuDim Dim => (SuDim)((_opcode >> 33) & 0x7);
- public CacheOpSt CacheOp => (CacheOpSt)((_opcode >> 24) & 0x3);
- public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
- }
-
- struct InstSync
- {
- private ulong _opcode;
- public InstSync(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public Ccc Ccc => (Ccc)((_opcode >> 0) & 0x1F);
- }
-
- struct InstTex
- {
- private ulong _opcode;
- public InstTex(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Lc => (_opcode & 0x400000000000000) != 0;
- public int DestPred => (int)((_opcode >> 51) & 0x7);
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public Lod Lod => (Lod)((_opcode >> 55) & 0x7);
- public bool Aoffi => (_opcode & 0x40000000000000) != 0;
- public bool Dc => (_opcode & 0x4000000000000) != 0;
- public bool Ndv => (_opcode & 0x800000000) != 0;
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- }
-
- struct InstTexB
- {
- private ulong _opcode;
- public InstTexB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Lcb => (_opcode & 0x10000000000) != 0;
- public int DestPred => (int)((_opcode >> 51) & 0x7);
- public Lod Lodb => (Lod)((_opcode >> 37) & 0x7);
- public bool Aoffib => (_opcode & 0x1000000000) != 0;
- public bool Dc => (_opcode & 0x4000000000000) != 0;
- public bool Ndv => (_opcode & 0x800000000) != 0;
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- }
-
- struct InstTexs
- {
- private ulong _opcode;
- public InstTexs(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public TexsTarget Target => (TexsTarget)((_opcode >> 53) & 0xF);
- public int WMask => (int)((_opcode >> 50) & 0x7);
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int Dest2 => (int)((_opcode >> 28) & 0xFF);
- }
-
- struct InstTld
- {
- private ulong _opcode;
- public InstTld(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public bool Lod => (_opcode & 0x80000000000000) != 0;
- public bool Toff => (_opcode & 0x800000000) != 0;
- public bool Ms => (_opcode & 0x4000000000000) != 0;
- public bool Cl => (_opcode & 0x40000000000000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int DestPred => (int)((_opcode >> 51) & 0x7);
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- }
-
- struct InstTldB
- {
- private ulong _opcode;
- public InstTldB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public bool Lod => (_opcode & 0x80000000000000) != 0;
- public bool Toff => (_opcode & 0x800000000) != 0;
- public bool Ms => (_opcode & 0x4000000000000) != 0;
- public bool Cl => (_opcode & 0x40000000000000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int DestPred => (int)((_opcode >> 51) & 0x7);
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- }
-
- struct InstTlds
- {
- private ulong _opcode;
- public InstTlds(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public TldsTarget Target => (TldsTarget)((_opcode >> 53) & 0xF);
- public int WMask => (int)((_opcode >> 50) & 0x7);
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int Dest2 => (int)((_opcode >> 28) & 0xFF);
- }
-
- struct InstTld4
- {
- private ulong _opcode;
- public InstTld4(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Lc => (_opcode & 0x400000000000000) != 0;
- public int DestPred => (int)((_opcode >> 51) & 0x7);
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public TexComp TexComp => (TexComp)((_opcode >> 56) & 0x3);
- public TexOffset Toff => (TexOffset)((_opcode >> 54) & 0x3);
- public bool Dc => (_opcode & 0x4000000000000) != 0;
- public bool Ndv => (_opcode & 0x800000000) != 0;
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- }
-
- struct InstTld4B
- {
- private ulong _opcode;
- public InstTld4B(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Lc => (_opcode & 0x10000000000) != 0;
- public int DestPred => (int)((_opcode >> 51) & 0x7);
- public TexComp TexComp => (TexComp)((_opcode >> 38) & 0x3);
- public TexOffset Toff => (TexOffset)((_opcode >> 36) & 0x3);
- public bool Dc => (_opcode & 0x4000000000000) != 0;
- public bool Ndv => (_opcode & 0x800000000) != 0;
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- }
-
- struct InstTld4s
- {
- private ulong _opcode;
- public InstTld4s(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public TexComp TexComp => (TexComp)((_opcode >> 52) & 0x3);
- public bool Aoffi => (_opcode & 0x8000000000000) != 0;
- public bool Dc => (_opcode & 0x4000000000000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int Dest2 => (int)((_opcode >> 28) & 0xFF);
- }
-
- struct InstTmml
- {
- private ulong _opcode;
- public InstTmml(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public bool Ndv => (_opcode & 0x800000000) != 0;
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- }
-
- struct InstTmmlB
- {
- private ulong _opcode;
- public InstTmmlB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public bool Ndv => (_opcode & 0x800000000) != 0;
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- }
-
- struct InstTxa
- {
- private ulong _opcode;
- public InstTxa(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public bool Ndv => (_opcode & 0x800000000) != 0;
- public int WMask => (int)((_opcode >> 31) & 0xF);
- }
-
- struct InstTxd
- {
- private ulong _opcode;
- public InstTxd(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int DestPred => (int)((_opcode >> 51) & 0x7);
- public bool Lc => (_opcode & 0x4000000000000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public bool Toff => (_opcode & 0x800000000) != 0;
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- }
-
- struct InstTxdB
- {
- private ulong _opcode;
- public InstTxdB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int DestPred => (int)((_opcode >> 51) & 0x7);
- public bool Lc => (_opcode & 0x4000000000000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public bool Toff => (_opcode & 0x800000000) != 0;
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
- }
-
- struct InstTxq
- {
- private ulong _opcode;
- public InstTxq(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int TidB => (int)((_opcode >> 36) & 0x1FFF);
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public TexQuery TexQuery => (TexQuery)((_opcode >> 22) & 0x3F);
- }
-
- struct InstTxqB
- {
- private ulong _opcode;
- public InstTxqB(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool Nodep => (_opcode & 0x2000000000000) != 0;
- public int WMask => (int)((_opcode >> 31) & 0xF);
- public TexQuery TexQuery => (TexQuery)((_opcode >> 22) & 0x3F);
- }
-
- struct InstVabsdiff
- {
- private ulong _opcode;
- public InstVabsdiff(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool DFormat => (_opcode & 0x40000000000000) != 0;
- public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
- public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
- public bool Sat => (_opcode & 0x80000000000000) != 0;
- public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
- public bool BVideo => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstVabsdiff4
- {
- private ulong _opcode;
- public InstVabsdiff4(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public VideoRed VRed => (VideoRed)((_opcode >> 53) & 0x3);
- public LaneMask4 LaneMask4 => (LaneMask4)((int)((_opcode >> 49) & 0xC) | (int)((_opcode >> 36) & 0x3));
- public bool Sat => (_opcode & 0x4000000000000) != 0;
- public bool SrcBFmt => (_opcode & 0x2000000000000) != 0;
- public bool SrcAFmt => (_opcode & 0x1000000000000) != 0;
- public bool DFormat => (_opcode & 0x4000000000) != 0;
- public ASelect4 Asel4 => (ASelect4)((_opcode >> 32) & 0xF);
- public BSelect4 Bsel4 => (BSelect4)((_opcode >> 28) & 0xF);
- }
-
- struct InstVadd
- {
- private ulong _opcode;
- public InstVadd(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 56) & 0x3);
- public bool DFormat => (_opcode & 0x40000000000000) != 0;
- public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
- public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
- public bool Sat => (_opcode & 0x80000000000000) != 0;
- public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
- public bool BVideo => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstVmad
- {
- private ulong _opcode;
- public InstVmad(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
- public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
- public bool Sat => (_opcode & 0x80000000000000) != 0;
- public AvgMode AvgMode => (AvgMode)((_opcode >> 53) & 0x3);
- public VideoScale VideoScale => (VideoScale)((_opcode >> 51) & 0x3);
- public bool BVideo => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstVmnmx
- {
- private ulong _opcode;
- public InstVmnmx(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool DFormat => (_opcode & 0x40000000000000) != 0;
- public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
- public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
- public bool Sat => (_opcode & 0x80000000000000) != 0;
- public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
- public bool Mn => (_opcode & 0x100000000000000) != 0;
- public bool BVideo => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstVote
- {
- private ulong _opcode;
- public InstVote(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public VoteMode VoteMode => (VoteMode)((_opcode >> 48) & 0x3);
- public int VpDest => (int)((_opcode >> 45) & 0x7);
- }
-
- struct InstVotevtg
- {
- private ulong _opcode;
- public InstVotevtg(ulong opcode) => _opcode = opcode;
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public VoteMode VoteMode => (VoteMode)((_opcode >> 48) & 0x3);
- public int Imm28 => (int)((_opcode >> 20) & 0xFFFFFFF);
- }
-
- struct InstVset
- {
- private ulong _opcode;
- public InstVset(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public IComp VComp => (IComp)((_opcode >> 54) & 0x7);
- public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
- public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
- public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
- public bool BVideo => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstVsetp
- {
- private ulong _opcode;
- public InstVsetp(ulong opcode) => _opcode = opcode;
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
- public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
- public VectorSelect BSelect => (VectorSelect)((int)((_opcode >> 46) & 0x8) | (int)((_opcode >> 28) & 0x7));
- public IComp VComp => (IComp)((int)((_opcode >> 45) & 0x4) | (int)((_opcode >> 43) & 0x3));
- public BoolOp BoolOp => (BoolOp)((_opcode >> 45) & 0x3);
- public int SrcPred => (int)((_opcode >> 39) & 0x7);
- public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
- public int DestPred => (int)((_opcode >> 3) & 0x7);
- public int DestPredInv => (int)((_opcode >> 0) & 0x7);
- public bool BVideo => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstVshl
- {
- private ulong _opcode;
- public InstVshl(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Mv => (_opcode & 0x2000000000000) != 0;
- public bool DFormat => (_opcode & 0x40000000000000) != 0;
- public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
- public VectorSelect BSelect => (VectorSelect)((_opcode >> 28) & 0x7);
- public bool Sat => (_opcode & 0x80000000000000) != 0;
- public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
- public bool BVideo => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstVshr
- {
- private ulong _opcode;
- public InstVshr(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Mv => (_opcode & 0x2000000000000) != 0;
- public bool DFormat => (_opcode & 0x40000000000000) != 0;
- public VectorSelect ASelect => (VectorSelect)((int)((_opcode >> 45) & 0x8) | (int)((_opcode >> 36) & 0x7));
- public VectorSelect BSelect => (VectorSelect)((_opcode >> 28) & 0x7);
- public bool Sat => (_opcode & 0x80000000000000) != 0;
- public VideoOp VideoOp => (VideoOp)((_opcode >> 51) & 0x7);
- public bool BVideo => (_opcode & 0x4000000000000) != 0;
- }
-
- struct InstXmadR
- {
- private ulong _opcode;
- public InstXmadR(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcB => (int)((_opcode >> 20) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool HiloA => (_opcode & 0x20000000000000) != 0;
- public XmadCop XmadCop => (XmadCop)((_opcode >> 50) & 0x7);
- public bool BSigned => (_opcode & 0x2000000000000) != 0;
- public bool ASigned => (_opcode & 0x1000000000000) != 0;
- public bool X => (_opcode & 0x4000000000) != 0;
- public bool Mrg => (_opcode & 0x2000000000) != 0;
- public bool Psl => (_opcode & 0x1000000000) != 0;
- public bool HiloB => (_opcode & 0x800000000) != 0;
- }
-
- struct InstXmadI
- {
- private ulong _opcode;
- public InstXmadI(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
- public bool HiloA => (_opcode & 0x20000000000000) != 0;
- public XmadCop XmadCop => (XmadCop)((_opcode >> 50) & 0x7);
- public bool BSigned => (_opcode & 0x2000000000000) != 0;
- public bool ASigned => (_opcode & 0x1000000000000) != 0;
- public bool X => (_opcode & 0x4000000000) != 0;
- public bool Mrg => (_opcode & 0x2000000000) != 0;
- public bool Psl => (_opcode & 0x1000000000) != 0;
- }
-
- struct InstXmadC
- {
- private ulong _opcode;
- public InstXmadC(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool Mrg => (_opcode & 0x100000000000000) != 0;
- public bool Psl => (_opcode & 0x80000000000000) != 0;
- public bool X => (_opcode & 0x40000000000000) != 0;
- public bool HiloA => (_opcode & 0x20000000000000) != 0;
- public bool HiloB => (_opcode & 0x10000000000000) != 0;
- public XmadCop2 XmadCop => (XmadCop2)((_opcode >> 50) & 0x3);
- public bool BSigned => (_opcode & 0x2000000000000) != 0;
- public bool ASigned => (_opcode & 0x1000000000000) != 0;
- }
-
- struct InstXmadRc
- {
- private ulong _opcode;
- public InstXmadRc(ulong opcode) => _opcode = opcode;
- public int Dest => (int)((_opcode >> 0) & 0xFF);
- public int SrcA => (int)((_opcode >> 8) & 0xFF);
- public int SrcC => (int)((_opcode >> 39) & 0xFF);
- public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
- public int CbufOffset => (int)((_opcode >> 20) & 0x3FFF);
- public int Pred => (int)((_opcode >> 16) & 0x7);
- public bool PredInv => (_opcode & 0x80000) != 0;
- public bool WriteCC => (_opcode & 0x800000000000) != 0;
- public bool X => (_opcode & 0x40000000000000) != 0;
- public bool HiloA => (_opcode & 0x20000000000000) != 0;
- public bool HiloB => (_opcode & 0x10000000000000) != 0;
- public XmadCop2 XmadCop => (XmadCop2)((_opcode >> 50) & 0x3);
- public bool BSigned => (_opcode & 0x2000000000000) != 0;
- public bool ASigned => (_opcode & 0x1000000000000) != 0;
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/InstName.cs b/Ryujinx.Graphics.Shader/Decoders/InstName.cs
deleted file mode 100644
index 9c79b7a5..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/InstName.cs
+++ /dev/null
@@ -1,188 +0,0 @@
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- enum InstName : byte
- {
- Invalid = 0,
-
- Al2p,
- Ald,
- Ast,
- Atom,
- AtomCas,
- Atoms,
- AtomsCas,
- B2r,
- Bar,
- Bfe,
- Bfi,
- Bpt,
- Bra,
- Brk,
- Brx,
- Cal,
- Cctl,
- Cctll,
- Cctlt,
- Cont,
- Cset,
- Csetp,
- Cs2r,
- Dadd,
- Depbar,
- Dfma,
- Dmnmx,
- Dmul,
- Dset,
- Dsetp,
- Exit,
- F2f,
- F2i,
- Fadd,
- Fadd32i,
- Fchk,
- Fcmp,
- Ffma,
- Ffma32i,
- Flo,
- Fmnmx,
- Fmul,
- Fmul32i,
- Fset,
- Fsetp,
- Fswzadd,
- Getcrsptr,
- Getlmembase,
- Hadd2,
- Hadd232i,
- Hfma2,
- Hmul2,
- Hmul232i,
- Hset2,
- Hsetp2,
- I2f,
- I2i,
- Iadd,
- Iadd32i,
- Iadd3,
- Icmp,
- Ide,
- Idp,
- Imad,
- Imad32i,
- Imadsp,
- Imnmx,
- Imul,
- Imul32i,
- Ipa,
- Isberd,
- Iscadd,
- Iscadd32i,
- Iset,
- Isetp,
- Jcal,
- Jmp,
- Jmx,
- Kil,
- Ld,
- Ldc,
- Ldg,
- Ldl,
- Lds,
- Lea,
- LeaHi,
- Lepc,
- Longjmp,
- Lop,
- Lop3,
- Lop32i,
- Membar,
- Mov,
- Mov32i,
- Mufu,
- Nop,
- Out,
- P2r,
- Pbk,
- Pcnt,
- Pexit,
- Pixld,
- Plongjmp,
- Popc,
- Pret,
- Prmt,
- Pset,
- Psetp,
- R2b,
- R2p,
- Ram,
- Red,
- Ret,
- Rro,
- Rtt,
- S2r,
- Sam,
- Sel,
- Setcrsptr,
- Setlmembase,
- Shf,
- Shf_2,
- Shf_3,
- Shf_4,
- Shfl,
- Shl,
- Shr,
- Ssy,
- St,
- Stg,
- Stl,
- Stp,
- Sts,
- SuatomB,
- Suatom,
- SuatomB2,
- SuatomCasB,
- SuatomCas,
- SuldDB,
- SuldD,
- SuldB,
- Suld,
- SuredB,
- Sured,
- SustDB,
- SustD,
- SustB,
- Sust,
- Sync,
- Tex,
- TexB,
- Texs,
- TexsF16,
- Tld,
- TldB,
- Tlds,
- TldsF16,
- Tld4,
- Tld4B,
- Tld4s,
- Tld4sF16,
- Tmml,
- TmmlB,
- Txa,
- Txd,
- TxdB,
- Txq,
- TxqB,
- Vabsdiff,
- Vabsdiff4,
- Vadd,
- Vmad,
- Vmnmx,
- Vote,
- Votevtg,
- Vset,
- Vsetp,
- Vshl,
- Vshr,
- Xmad,
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/InstOp.cs b/Ryujinx.Graphics.Shader/Decoders/InstOp.cs
deleted file mode 100644
index 39244e64..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/InstOp.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using Ryujinx.Graphics.Shader.Instructions;
-
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- readonly struct InstOp
- {
- public readonly ulong Address;
- public readonly ulong RawOpCode;
- public readonly InstEmitter Emitter;
- public readonly InstProps Props;
- public readonly InstName Name;
-
- public InstOp(ulong address, ulong rawOpCode, InstName name, InstEmitter emitter, InstProps props)
- {
- Address = address;
- RawOpCode = rawOpCode;
- Name = name;
- Emitter = emitter;
- Props = props;
- }
-
- public ulong GetAbsoluteAddress()
- {
- return (ulong)((long)Address + (((int)(RawOpCode >> 20) << 8) >> 8) + 8);
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/InstProps.cs b/Ryujinx.Graphics.Shader/Decoders/InstProps.cs
deleted file mode 100644
index 1af94ab5..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/InstProps.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- enum InstProps : ushort
- {
- None = 0,
- Rd = 1 << 0,
- Rd2 = 1 << 1,
- Ra = 1 << 2,
- Rb = 1 << 3,
- Rb2 = 1 << 4,
- Ib = 1 << 5,
- Rc = 1 << 6,
-
- Pd = 1 << 7,
- LPd = 2 << 7,
- SPd = 3 << 7,
- TPd = 4 << 7,
- VPd = 5 << 7,
- PdMask = 7 << 7,
-
- Pdn = 1 << 10,
- Ps = 1 << 11,
- Tex = 1 << 12,
- TexB = 1 << 13,
- Bra = 1 << 14,
- NoPred = 1 << 15
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/InstTable.cs b/Ryujinx.Graphics.Shader/Decoders/InstTable.cs
deleted file mode 100644
index eaa77930..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/InstTable.cs
+++ /dev/null
@@ -1,390 +0,0 @@
-using Ryujinx.Graphics.Shader.Instructions;
-using System;
-
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- static class InstTable
- {
- private const int EncodingBits = 14;
-
- private readonly struct TableEntry
- {
- public InstName Name { get; }
- public InstEmitter Emitter { get; }
- public InstProps Props { get; }
-
- public int XBits { get; }
-
- public TableEntry(InstName name, InstEmitter emitter, InstProps props, int xBits)
- {
- Name = name;
- Emitter = emitter;
- Props = props;
- XBits = xBits;
- }
- }
-
- private static TableEntry[] _opCodes;
-
- static InstTable()
- {
- _opCodes = new TableEntry[1 << EncodingBits];
-
- #region Instructions
- Add("1110111110100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Al2p, InstEmit.Al2p, InstProps.Rd | InstProps.Ra);
- Add("1110111111011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ald, InstEmit.Ald, InstProps.Rd | InstProps.Ra);
- Add("1110111111110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ast, InstEmit.Ast, InstProps.Ra | InstProps.Rb2 | InstProps.Rc);
- Add("11101101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Atom, InstEmit.Atom, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("111011101111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.AtomCas, InstEmit.AtomCas, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("11101100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Atoms, InstEmit.Atoms, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("111011100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.AtomsCas, InstEmit.AtomsCas, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("1111000010111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.B2r, InstEmit.B2r, InstProps.Rd | InstProps.Ra | InstProps.VPd);
- Add("1111000010101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bar, InstEmit.Bar, InstProps.Ra | InstProps.Ps);
- Add("0101110000000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bfe, InstEmit.BfeR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x00000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bfe, InstEmit.BfeI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110000000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bfe, InstEmit.BfeC, InstProps.Rd | InstProps.Ra);
- Add("0101101111110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bfi, InstEmit.BfiR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011011x11110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bfi, InstEmit.BfiI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("0100101111110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bfi, InstEmit.BfiC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("0101001111110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bfi, InstEmit.BfiRc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("111000111010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bpt, InstEmit.Bpt, InstProps.NoPred);
- Add("111000100100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Bra, InstEmit.Bra, InstProps.Bra);
- Add("111000110100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Brk, InstEmit.Brk, InstProps.Bra);
- Add("111000100101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Brx, InstEmit.Brx, InstProps.Ra | InstProps.Bra);
- Add("111000100110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Cal, InstEmit.Cal, InstProps.Bra | InstProps.NoPred);
- Add("11101111011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Cctl, InstEmit.Cctl, InstProps.Ra);
- Add("1110111110000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Cctll, InstEmit.Cctll, InstProps.Ra);
- Add("1110101111110xx0000000000000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Cctlt, InstEmit.Cctlt);
- Add("1110101111101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Cctlt, InstEmit.Cctlt, InstProps.Rc);
- Add("111000110101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Cont, InstEmit.Cont, InstProps.Bra);
- Add("0101000010011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Cset, InstEmit.Cset, InstProps.Rd | InstProps.Ps);
- Add("0101000010100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Csetp, InstEmit.Csetp, InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("0101000011001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Cs2r, InstEmit.Cs2r, InstProps.Rd);
- Add("0101110001110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dadd, InstEmit.DaddR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x01110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dadd, InstEmit.DaddI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110001110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dadd, InstEmit.DaddC, InstProps.Rd | InstProps.Ra);
- Add("1111000011110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Depbar, InstEmit.Depbar);
- Add("010110110111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dfma, InstEmit.DfmaR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011011x0111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dfma, InstEmit.DfmaI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("010010110111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dfma, InstEmit.DfmaC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010100110111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dfma, InstEmit.DfmaRc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("0101110001010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dmnmx, InstEmit.DmnmxR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Ps);
- Add("0011100x01010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dmnmx, InstEmit.DmnmxI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Ps);
- Add("0100110001010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dmnmx, InstEmit.DmnmxC, InstProps.Rd | InstProps.Ra | InstProps.Ps);
- Add("0101110010000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dmul, InstEmit.DmulR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x10000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dmul, InstEmit.DmulI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110010000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dmul, InstEmit.DmulC, InstProps.Rd | InstProps.Ra);
- Add("010110010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dset, InstEmit.DsetR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Ps);
- Add("0011001x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dset, InstEmit.DsetI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Ps);
- Add("010010010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dset, InstEmit.DsetC, InstProps.Rd | InstProps.Ra | InstProps.Ps);
- Add("010110111000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dsetp, InstEmit.DsetpR, InstProps.Ra | InstProps.Rb | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("0011011x1000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dsetp, InstEmit.DsetpI, InstProps.Ra | InstProps.Ib | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("010010111000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Dsetp, InstEmit.DsetpC, InstProps.Ra | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("111000110000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Exit, InstEmit.Exit, InstProps.Bra);
- Add("0101110010101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.F2f, InstEmit.F2fR, InstProps.Rd | InstProps.Rb);
- Add("0011100x10101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.F2f, InstEmit.F2fI, InstProps.Rd | InstProps.Ib);
- Add("0100110010101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.F2f, InstEmit.F2fC, InstProps.Rd);
- Add("0101110010110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.F2i, InstEmit.F2iR, InstProps.Rd | InstProps.Rb);
- Add("0011100x10110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.F2i, InstEmit.F2iI, InstProps.Rd | InstProps.Ib);
- Add("0100110010110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.F2i, InstEmit.F2iC, InstProps.Rd);
- Add("0101110001011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fadd, InstEmit.FaddR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x01011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fadd, InstEmit.FaddI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110001011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fadd, InstEmit.FaddC, InstProps.Rd | InstProps.Ra);
- Add("000010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fadd32i, InstEmit.Fadd32i, InstProps.Rd | InstProps.Ra);
- Add("0101110010001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fchk, InstEmit.FchkR, InstProps.Ra | InstProps.Rb | InstProps.Pd);
- Add("0011100x10001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fchk, InstEmit.FchkI, InstProps.Ra | InstProps.Ib | InstProps.Pd);
- Add("0100110010001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fchk, InstEmit.FchkC, InstProps.Ra | InstProps.Pd);
- Add("010110111010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fcmp, InstEmit.FcmpR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011011x1010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fcmp, InstEmit.FcmpI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("010010111010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fcmp, InstEmit.FcmpC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010100111010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fcmp, InstEmit.FcmpRc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010110011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ffma, InstEmit.FfmaR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011001x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ffma, InstEmit.FfmaI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("010010011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ffma, InstEmit.FfmaC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010100011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ffma, InstEmit.FfmaRc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("000011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ffma32i, InstEmit.Ffma32i, InstProps.Rd | InstProps.Ra);
- Add("0101110000110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Flo, InstEmit.FloR, InstProps.Rd | InstProps.Rb);
- Add("0011100x00110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Flo, InstEmit.FloI, InstProps.Rd | InstProps.Ib);
- Add("0100110000110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Flo, InstEmit.FloC, InstProps.Rd);
- Add("0101110001100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fmnmx, InstEmit.FmnmxR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Ps);
- Add("0011100x01100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fmnmx, InstEmit.FmnmxI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Ps);
- Add("0100110001100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fmnmx, InstEmit.FmnmxC, InstProps.Rd | InstProps.Ra | InstProps.Ps);
- Add("0101110001101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fmul, InstEmit.FmulR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x01101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fmul, InstEmit.FmulI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110001101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fmul, InstEmit.FmulC, InstProps.Rd | InstProps.Ra);
- Add("00011110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fmul32i, InstEmit.Fmul32i, InstProps.Rd | InstProps.Ra);
- Add("01011000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fset, InstEmit.FsetR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Ps);
- Add("0011000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fset, InstEmit.FsetI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Ps);
- Add("01001000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fset, InstEmit.FsetC, InstProps.Rd | InstProps.Ra | InstProps.Ps);
- Add("010110111011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fsetp, InstEmit.FsetpR, InstProps.Ra | InstProps.Rb | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("0011011x1011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fsetp, InstEmit.FsetpI, InstProps.Ra | InstProps.Ib | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("010010111011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fsetp, InstEmit.FsetpC, InstProps.Ra | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("0101000011111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Fswzadd, InstEmit.Fswzadd, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("111000101100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Getcrsptr, InstEmit.Getcrsptr, InstProps.Rd | InstProps.NoPred);
- Add("111000101101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Getlmembase, InstEmit.Getlmembase, InstProps.Rd | InstProps.NoPred);
- Add("0101110100010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hadd2, InstEmit.Hadd2R, InstProps.Rd | InstProps.Ra);
- Add("0111101x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hadd2, InstEmit.Hadd2I, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0111101x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hadd2, InstEmit.Hadd2C, InstProps.Rd | InstProps.Ra);
- Add("0010110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hadd232i, InstEmit.Hadd232i, InstProps.Rd | InstProps.Ra);
- Add("0101110100000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hfma2, InstEmit.Hfma2R, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("01110xxx0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hfma2, InstEmit.Hfma2I, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("01110xxx1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hfma2, InstEmit.Hfma2C, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("01100xxx1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hfma2, InstEmit.Hfma2Rc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("0010100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hfma2, InstEmit.Hfma232i, InstProps.Rd | InstProps.Ra);
- Add("0101110100001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hmul2, InstEmit.Hmul2R, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0111100x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hmul2, InstEmit.Hmul2I, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0111100x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hmul2, InstEmit.Hmul2C, InstProps.Rd | InstProps.Ra);
- Add("0010101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hmul232i, InstEmit.Hmul232i, InstProps.Rd | InstProps.Ra);
- Add("0101110100011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hset2, InstEmit.Hset2R, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Ps);
- Add("0111110x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hset2, InstEmit.Hset2I, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Ps);
- Add("0111110x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hset2, InstEmit.Hset2C, InstProps.Rd | InstProps.Ra | InstProps.Ps);
- Add("0101110100100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hsetp2, InstEmit.Hsetp2R, InstProps.Ra | InstProps.Rb | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("0111111x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hsetp2, InstEmit.Hsetp2I, InstProps.Ra | InstProps.Ib | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("0111111x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Hsetp2, InstEmit.Hsetp2C, InstProps.Ra | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("0101110010111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.I2f, InstEmit.I2fR, InstProps.Rd | InstProps.Rb);
- Add("0011100x10111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.I2f, InstEmit.I2fI, InstProps.Rd | InstProps.Ib);
- Add("0100110010111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.I2f, InstEmit.I2fC, InstProps.Rd);
- Add("0101110011100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.I2i, InstEmit.I2iR, InstProps.Rd | InstProps.Rb);
- Add("0011100x11100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.I2i, InstEmit.I2iI, InstProps.Rd | InstProps.Ib);
- Add("0100110011100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.I2i, InstEmit.I2iC, InstProps.Rd);
- Add("0101110000010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iadd, InstEmit.IaddR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x00010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iadd, InstEmit.IaddI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110000010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iadd, InstEmit.IaddC, InstProps.Rd | InstProps.Ra);
- Add("0001110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iadd32i, InstEmit.Iadd32i, InstProps.Rd | InstProps.Ra);
- Add("010111001100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iadd3, InstEmit.Iadd3R, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011100x1100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iadd3, InstEmit.Iadd3I, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("010011001100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iadd3, InstEmit.Iadd3C, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010110110100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Icmp, InstEmit.IcmpR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011011x0100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Icmp, InstEmit.IcmpI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("010010110100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Icmp, InstEmit.IcmpC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010100110100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Icmp, InstEmit.IcmpRc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("111000111001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ide, InstEmit.Ide, InstProps.NoPred);
- Add("0101001111111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Idp, InstEmit.IdpR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0101001111011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Idp, InstEmit.IdpC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010110100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imad, InstEmit.ImadR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011010x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imad, InstEmit.ImadI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("010010100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imad, InstEmit.ImadC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010100100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imad, InstEmit.ImadRc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("000100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imad32i, InstEmit.Imad32i, InstProps.Rd | InstProps.Ra);
- Add("010110101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imadsp, InstEmit.ImadspR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011010x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imadsp, InstEmit.ImadspI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("010010101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imadsp, InstEmit.ImadspC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010100101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imadsp, InstEmit.ImadspRc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("0101110000100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imnmx, InstEmit.ImnmxR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Ps);
- Add("0011100x00100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imnmx, InstEmit.ImnmxI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Ps);
- Add("0100110000100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imnmx, InstEmit.ImnmxC, InstProps.Rd | InstProps.Ra | InstProps.Ps);
- Add("0101110000111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imul, InstEmit.ImulR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x00111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imul, InstEmit.ImulI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110000111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imul, InstEmit.ImulC, InstProps.Rd | InstProps.Ra);
- Add("00011111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Imul32i, InstEmit.Imul32i, InstProps.Rd | InstProps.Ra);
- Add("11100000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ipa, InstEmit.Ipa, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("1110111111010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Isberd, InstEmit.Isberd, InstProps.Rd | InstProps.Ra);
- Add("0101110000011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iscadd, InstEmit.IscaddR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x00011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iscadd, InstEmit.IscaddI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110000011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iscadd, InstEmit.IscaddC, InstProps.Rd | InstProps.Ra);
- Add("000101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iscadd32i, InstEmit.Iscadd32i, InstProps.Rd | InstProps.Ra);
- Add("010110110101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iset, InstEmit.IsetR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Ps);
- Add("0011011x0101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iset, InstEmit.IsetI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Ps);
- Add("010010110101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Iset, InstEmit.IsetC, InstProps.Rd | InstProps.Ra | InstProps.Ps);
- Add("010110110110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Isetp, InstEmit.IsetpR, InstProps.Ra | InstProps.Rb | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("0011011x0110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Isetp, InstEmit.IsetpI, InstProps.Ra | InstProps.Ib | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("010010110110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Isetp, InstEmit.IsetpC, InstProps.Ra | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("111000100010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Jcal, InstEmit.Jcal, InstProps.Bra);
- Add("111000100001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Jmp, InstEmit.Jmp, InstProps.Ra | InstProps.Bra);
- Add("111000100000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Jmx, InstEmit.Jmx, InstProps.Ra | InstProps.Bra);
- Add("111000110011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Kil, InstEmit.Kil, InstProps.Bra);
- Add("100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ld, InstEmit.Ld, InstProps.Rd | InstProps.Ra);
- Add("1110111110010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ldc, InstEmit.Ldc, InstProps.Rd | InstProps.Ra);
- Add("1110111011010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ldg, InstEmit.Ldg, InstProps.Rd | InstProps.Ra);
- Add("1110111101000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ldl, InstEmit.Ldl, InstProps.Rd | InstProps.Ra);
- Add("1110111101001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lds, InstEmit.Lds, InstProps.Rd | InstProps.Ra);
- Add("0101101111010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lea, InstEmit.LeaR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.LPd);
- Add("0011011x11010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lea, InstEmit.LeaI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.LPd);
- Add("0100101111010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lea, InstEmit.LeaC, InstProps.Rd | InstProps.Ra | InstProps.LPd);
- Add("0101101111011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.LeaHi, InstEmit.LeaHiR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc | InstProps.LPd);
- Add("000110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.LeaHi, InstEmit.LeaHiC, InstProps.Rd | InstProps.Ra | InstProps.Rc | InstProps.LPd);
- Add("0101000011010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lepc, InstEmit.Lepc);
- Add("111000110001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Longjmp, InstEmit.Longjmp, InstProps.Bra);
- Add("0101110001000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lop, InstEmit.LopR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.LPd);
- Add("0011100x01000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lop, InstEmit.LopI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.LPd);
- Add("0100110001000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lop, InstEmit.LopC, InstProps.Rd | InstProps.Ra | InstProps.LPd);
- Add("0101101111100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lop3, InstEmit.Lop3R, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc | InstProps.LPd);
- Add("001111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lop3, InstEmit.Lop3I, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("0000001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lop3, InstEmit.Lop3C, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("000001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Lop32i, InstEmit.Lop32i, InstProps.Rd | InstProps.Ra);
- Add("1110111110011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Membar, InstEmit.Membar);
- Add("0101110010011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Mov, InstEmit.MovR, InstProps.Rd | InstProps.Ra);
- Add("0011100x10011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Mov, InstEmit.MovI, InstProps.Rd | InstProps.Ib);
- Add("0100110010011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Mov, InstEmit.MovC, InstProps.Rd);
- Add("000000010000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Mov32i, InstEmit.Mov32i, InstProps.Rd);
- Add("0101000010000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Mufu, InstEmit.Mufu, InstProps.Rd | InstProps.Ra);
- Add("0101000010110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Nop, InstEmit.Nop);
- Add("1111101111100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Out, InstEmit.OutR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("1111011x11100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Out, InstEmit.OutI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("1110101111100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Out, InstEmit.OutC, InstProps.Rd | InstProps.Ra);
- Add("0101110011101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.P2r, InstEmit.P2rR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x11101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.P2r, InstEmit.P2rI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110011101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.P2r, InstEmit.P2rC, InstProps.Rd | InstProps.Ra);
- Add("111000101010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Pbk, InstEmit.Pbk, InstProps.NoPred);
- Add("111000101011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Pcnt, InstEmit.Pcnt, InstProps.NoPred);
- Add("111000100011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Pexit, InstEmit.Pexit);
- Add("1110111111101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Pixld, InstEmit.Pixld, InstProps.Rd | InstProps.Ra | InstProps.VPd);
- Add("111000101000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Plongjmp, InstEmit.Plongjmp, InstProps.Bra | InstProps.NoPred);
- Add("0101110000001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Popc, InstEmit.PopcR, InstProps.Rd | InstProps.Rb);
- Add("0011100x00001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Popc, InstEmit.PopcI, InstProps.Rd | InstProps.Ib);
- Add("0100110000001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Popc, InstEmit.PopcC, InstProps.Rd);
- Add("111000100111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Pret, InstEmit.Pret, InstProps.NoPred);
- Add("010110111100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Prmt, InstEmit.PrmtR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011011x1100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Prmt, InstEmit.PrmtI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("010010111100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Prmt, InstEmit.PrmtC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010100111100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Prmt, InstEmit.PrmtRc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("0101000010001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Pset, InstEmit.Pset, InstProps.Rd | InstProps.Ps);
- Add("0101000010010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Psetp, InstEmit.Psetp, InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("1111000011000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.R2b, InstEmit.R2b, InstProps.Rb);
- Add("0101110011110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.R2p, InstEmit.R2pR, InstProps.Ra | InstProps.Rb);
- Add("0011100x11110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.R2p, InstEmit.R2pI, InstProps.Ra | InstProps.Ib);
- Add("0100110011110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.R2p, InstEmit.R2pC, InstProps.Ra);
- Add("111000111000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ram, InstEmit.Ram, InstProps.NoPred);
- Add("1110101111111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Red, InstEmit.Red, InstProps.Ra | InstProps.Rb2);
- Add("111000110010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ret, InstEmit.Ret, InstProps.Bra);
- Add("0101110010010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Rro, InstEmit.RroR, InstProps.Rd | InstProps.Rb);
- Add("0011100x10010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Rro, InstEmit.RroI, InstProps.Rd | InstProps.Ib);
- Add("0100110010010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Rro, InstEmit.RroC, InstProps.Rd);
- Add("111000110110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Rtt, InstEmit.Rtt, InstProps.NoPred);
- Add("1111000011001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.S2r, InstEmit.S2r, InstProps.Rd);
- Add("111000110111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Sam, InstEmit.Sam, InstProps.NoPred);
- Add("0101110010100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Sel, InstEmit.SelR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Ps);
- Add("0011100x10100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Sel, InstEmit.SelI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Ps);
- Add("0100110010100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Sel, InstEmit.SelC, InstProps.Rd | InstProps.Ra | InstProps.Ps);
- Add("111000101110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Setcrsptr, InstEmit.Setcrsptr, InstProps.Ra | InstProps.NoPred);
- Add("111000101111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Setlmembase, InstEmit.Setlmembase, InstProps.Ra | InstProps.NoPred);
- Add("0101101111111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shf, InstEmit.ShfLR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0101110011111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shf, InstEmit.ShfRR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011011x11111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shf, InstEmit.ShfLI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("0011100x11111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shf, InstEmit.ShfRI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("1110111100010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shfl, InstEmit.Shfl, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc | InstProps.LPd);
- Add("0101110001001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shl, InstEmit.ShlR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x01001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shl, InstEmit.ShlI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110001001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shl, InstEmit.ShlC, InstProps.Rd | InstProps.Ra);
- Add("0101110000101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shr, InstEmit.ShrR, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("0011100x00101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shr, InstEmit.ShrI, InstProps.Rd | InstProps.Ra | InstProps.Ib);
- Add("0100110000101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Shr, InstEmit.ShrC, InstProps.Rd | InstProps.Ra);
- Add("111000101001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Ssy, InstEmit.Ssy, InstProps.NoPred);
- Add("101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.St, InstEmit.St, InstProps.Rd | InstProps.Ra);
- Add("1110111011011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Stg, InstEmit.Stg, InstProps.Rd | InstProps.Ra);
- Add("1110111101010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Stl, InstEmit.Stl, InstProps.Rd | InstProps.Ra);
- Add("1110111010100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Stp, InstEmit.Stp, InstProps.NoPred);
- Add("1110111101011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Sts, InstEmit.Sts, InstProps.Rd | InstProps.Ra);
- Add("1110101001110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SuatomB, InstEmit.SuatomB, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("11101010x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Suatom, InstEmit.Suatom, InstProps.Rd | InstProps.Ra | InstProps.Rb);
- Add("1110101110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SuatomB2, InstEmit.SuatomB2, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("1110101011010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SuatomCasB, InstEmit.SuatomCasB, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc | InstProps.SPd);
- Add("1110101x1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SuatomCas, InstEmit.SuatomCas, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.SPd);
- Add("1110101100010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SuldDB, InstEmit.SuldDB, InstProps.Rd | InstProps.Ra | InstProps.Rc | InstProps.SPd | InstProps.TexB);
- Add("1110101100011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SuldD, InstEmit.SuldD, InstProps.Rd | InstProps.Ra | InstProps.SPd | InstProps.Tex);
- Add("1110101100000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SuldB, InstEmit.SuldB, InstProps.Rd | InstProps.Ra | InstProps.Rc | InstProps.SPd | InstProps.TexB);
- Add("1110101100001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Suld, InstEmit.Suld, InstProps.Rd | InstProps.Ra | InstProps.SPd | InstProps.Tex);
- Add("1110101101010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SuredB, InstEmit.SuredB, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("1110101101011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Sured, InstEmit.Sured, InstProps.Rd | InstProps.Ra);
- Add("1110101100110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SustDB, InstEmit.SustDB, InstProps.Rd | InstProps.Ra | InstProps.Rc | InstProps.TexB);
- Add("1110101100111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SustD, InstEmit.SustD, InstProps.Rd | InstProps.Ra | InstProps.Tex);
- Add("1110101100100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.SustB, InstEmit.SustB, InstProps.Rd | InstProps.Ra | InstProps.Rc | InstProps.TexB);
- Add("1110101100101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Sust, InstEmit.Sust, InstProps.Rd | InstProps.Ra | InstProps.Tex);
- Add("1111000011111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Sync, InstEmit.Sync, InstProps.Bra);
- Add("11000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Tex, InstEmit.Tex, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.TPd | InstProps.Tex);
- Add("1101111010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.TexB, InstEmit.TexB, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.TPd | InstProps.TexB);
- Add("1101100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Texs, InstEmit.Texs, InstProps.Rd | InstProps.Rd2 | InstProps.Ra | InstProps.Rb | InstProps.Tex);
- Add("1101000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.TexsF16, InstEmit.TexsF16, InstProps.Rd | InstProps.Rd2 | InstProps.Ra | InstProps.Rb | InstProps.Tex);
- Add("11011100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Tld, InstEmit.Tld, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.TPd | InstProps.Tex);
- Add("11011101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.TldB, InstEmit.TldB, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.TPd | InstProps.TexB);
- Add("1101101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Tlds, InstEmit.Tlds, InstProps.Rd | InstProps.Rd2 | InstProps.Ra | InstProps.Rb | InstProps.Tex);
- Add("1101001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.TldsF16, InstEmit.TldsF16, InstProps.Rd | InstProps.Rd2 | InstProps.Ra | InstProps.Rb | InstProps.Tex);
- Add("110010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Tld4, InstEmit.Tld4, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.TPd | InstProps.Tex);
- Add("1101111011xxxxxxxxxxxxx0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Tld4B, InstEmit.Tld4B, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.TPd | InstProps.TexB);
- Add("1101111100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Tld4s, InstEmit.Tld4s, InstProps.Rd | InstProps.Rd2 | InstProps.Ra | InstProps.Rb | InstProps.Tex);
- Add("1101111110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Tld4sF16, InstEmit.Tld4sF16, InstProps.Rd | InstProps.Rd2 | InstProps.Ra | InstProps.Rb | InstProps.Tex);
- Add("1101111101011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Tmml, InstEmit.Tmml, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Tex);
- Add("1101111101100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.TmmlB, InstEmit.TmmlB, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.TexB);
- Add("1101111101000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Txa, InstEmit.Txa, InstProps.Rd | InstProps.Ra | InstProps.Tex);
- Add("110111100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Txd, InstEmit.Txd, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.TPd | InstProps.Tex);
- Add("1101111001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.TxdB, InstEmit.TxdB, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.TPd | InstProps.TexB);
- Add("1101111101001xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Txq, InstEmit.Txq, InstProps.Rd | InstProps.Ra | InstProps.Tex);
- Add("1101111101010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.TxqB, InstEmit.TxqB, InstProps.Rd | InstProps.Ra | InstProps.TexB);
- Add("01010100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vabsdiff, InstEmit.Vabsdiff, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("010100000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vabsdiff4, InstEmit.Vabsdiff4, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("001000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vadd, InstEmit.Vadd, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("01011111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vmad, InstEmit.Vmad, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011101xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vmnmx, InstEmit.Vmnmx, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0101000011011xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vote, InstEmit.Vote, InstProps.Rd | InstProps.VPd | InstProps.Ps);
- Add("0101000011100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Votevtg, InstEmit.Votevtg);
- Add("0100000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vset, InstEmit.Vset, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0101000011110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vsetp, InstEmit.Vsetp, InstProps.Ra | InstProps.Rb | InstProps.Pd | InstProps.Pdn | InstProps.Ps);
- Add("01010111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vshl, InstEmit.Vshl, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("01010110xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Vshr, InstEmit.Vshr, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0101101100xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Xmad, InstEmit.XmadR, InstProps.Rd | InstProps.Ra | InstProps.Rb | InstProps.Rc);
- Add("0011011x00xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Xmad, InstEmit.XmadI, InstProps.Rd | InstProps.Ra | InstProps.Ib | InstProps.Rc);
- Add("0100111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Xmad, InstEmit.XmadC, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- Add("010100010xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", InstName.Xmad, InstEmit.XmadRc, InstProps.Rd | InstProps.Ra | InstProps.Rc);
- #endregion
- }
-
- private static void Add(string encoding, InstName name, InstEmitter emitter, InstProps props = InstProps.None)
- {
- ReadOnlySpan<char> encodingPart = encoding.AsSpan(0, EncodingBits);
-
- int bit = encodingPart.Length - 1;
- int value = 0;
- int xMask = 0;
- int xBits = 0;
-
- int[] xPos = new int[encodingPart.Length];
-
- for (int index = 0; index < encodingPart.Length; index++, bit--)
- {
- char chr = encodingPart[index];
-
- if (chr == '1')
- {
- value |= 1 << bit;
- }
- else if (chr == 'x')
- {
- xMask |= 1 << bit;
-
- xPos[xBits++] = bit;
- }
- }
-
- xMask = ~xMask;
-
- TableEntry entry = new TableEntry(name, emitter, props, xBits);
-
- for (int index = 0; index < (1 << xBits); index++)
- {
- value &= xMask;
-
- for (int x = 0; x < xBits; x++)
- {
- value |= ((index >> x) & 1) << xPos[x];
- }
-
- if (_opCodes[value].Emitter == null || _opCodes[value].XBits > xBits)
- {
- _opCodes[value] = entry;
- }
- }
- }
-
- public static InstOp GetOp(ulong address, ulong opCode)
- {
- ref TableEntry entry = ref _opCodes[opCode >> (64 - EncodingBits)];
-
- if (entry.Emitter != null)
- {
- return new InstOp(address, opCode, entry.Name, entry.Emitter, entry.Props);
- }
-
- return new InstOp(address, opCode, InstName.Invalid, null, InstProps.None);
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/Register.cs b/Ryujinx.Graphics.Shader/Decoders/Register.cs
deleted file mode 100644
index e375096d..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/Register.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- readonly struct Register : IEquatable<Register>
- {
- public int Index { get; }
-
- public RegisterType Type { get; }
-
- public bool IsRZ => Type == RegisterType.Gpr && Index == RegisterConsts.RegisterZeroIndex;
- public bool IsPT => Type == RegisterType.Predicate && Index == RegisterConsts.PredicateTrueIndex;
-
- public Register(int index, RegisterType type)
- {
- Index = index;
- Type = type;
- }
-
- public override int GetHashCode()
- {
- return (ushort)Index | ((ushort)Type << 16);
- }
-
- public override bool Equals(object obj)
- {
- return obj is Register reg && Equals(reg);
- }
-
- public bool Equals(Register other)
- {
- return other.Index == Index &&
- other.Type == Type;
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/RegisterConsts.cs b/Ryujinx.Graphics.Shader/Decoders/RegisterConsts.cs
deleted file mode 100644
index d381f954..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/RegisterConsts.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- static class RegisterConsts
- {
- public const int GprsCount = 255;
- public const int PredsCount = 7;
- public const int FlagsCount = 4;
- public const int TotalCount = GprsCount + PredsCount + FlagsCount;
-
- public const int RegisterZeroIndex = GprsCount;
- public const int PredicateTrueIndex = PredsCount;
- }
-} \ No newline at end of file
diff --git a/Ryujinx.Graphics.Shader/Decoders/RegisterType.cs b/Ryujinx.Graphics.Shader/Decoders/RegisterType.cs
deleted file mode 100644
index 648f816a..00000000
--- a/Ryujinx.Graphics.Shader/Decoders/RegisterType.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Ryujinx.Graphics.Shader.Decoders
-{
- enum RegisterType
- {
- Flag,
- Gpr,
- Predicate,
- }
-} \ No newline at end of file