aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Shader/Decoders
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/Decoders')
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/Block.cs6
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/DecodedFunction.cs2
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/DecodedProgram.cs2
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/Decoder.cs73
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs1180
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/InstName.cs2
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/InstOp.cs2
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/InstProps.cs4
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/InstTable.cs8
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/Register.cs8
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/RegisterConsts.cs6
-rw-r--r--src/Ryujinx.Graphics.Shader/Decoders/RegisterType.cs2
12 files changed, 652 insertions, 643 deletions
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/Block.cs b/src/Ryujinx.Graphics.Shader/Decoders/Block.cs
index 7d94e3f9..1a694898 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/Block.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/Block.cs
@@ -92,7 +92,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
pushOpInfo.Consumers.Add(rightBlock, local);
}
- foreach ((ulong key, SyncTarget value) in SyncTargets)
+ foreach ((ulong key, SyncTarget value) in SyncTargets)
{
rightBlock.SyncTargets.Add(key, value);
}
@@ -148,7 +148,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
{
if (OpCodes.Count != 0)
{
- return OpCodes[OpCodes.Count - 1];
+ return OpCodes[^1];
}
return default;
@@ -165,4 +165,4 @@ namespace Ryujinx.Graphics.Shader.Decoders
PushOpCodes.Add(new PushOpInfo(op));
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/DecodedFunction.cs b/src/Ryujinx.Graphics.Shader/Decoders/DecodedFunction.cs
index 7a172fe6..49cd3a30 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/DecodedFunction.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/DecodedFunction.cs
@@ -45,4 +45,4 @@ namespace Ryujinx.Graphics.Shader.Decoders
}
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/DecodedProgram.cs b/src/Ryujinx.Graphics.Shader/Decoders/DecodedProgram.cs
index 2dd60155..7776ccc5 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/DecodedProgram.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/DecodedProgram.cs
@@ -54,4 +54,4 @@ namespace Ryujinx.Graphics.Shader.Decoders
return GetEnumerator();
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/Decoder.cs b/src/Ryujinx.Graphics.Shader/Decoders/Decoder.cs
index 4e6c6a5d..ba31c020 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/Decoder.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/Decoder.cs
@@ -3,7 +3,6 @@ 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
@@ -12,8 +11,8 @@ namespace Ryujinx.Graphics.Shader.Decoders
{
public static DecodedProgram Decode(ShaderConfig config, ulong startAddress)
{
- Queue<DecodedFunction> functionsQueue = new Queue<DecodedFunction>();
- Dictionary<ulong, DecodedFunction> functionsVisited = new Dictionary<ulong, DecodedFunction>();
+ Queue<DecodedFunction> functionsQueue = new();
+ Dictionary<ulong, DecodedFunction> functionsVisited = new();
DecodedFunction EnqueueFunction(ulong address)
{
@@ -30,9 +29,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
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>();
+ List<Block> blocks = new();
+ Queue<Block> workQueue = new();
+ Dictionary<ulong, Block> visited = new();
Block GetBlock(ulong blkAddress)
{
@@ -168,7 +167,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
{
index = 0;
- int left = 0;
+ int left = 0;
int right = blocks.Count - 1;
while (left <= right)
@@ -273,12 +272,12 @@ namespace Ryujinx.Graphics.Shader.Decoders
int offset;
int count = 1;
bool isStore = false;
- bool indexed = false;
+ bool indexed;
bool perPatch = false;
if (name == InstName.Ast)
{
- InstAst opAst = new InstAst(opCode);
+ InstAst opAst = new(opCode);
count = (int)opAst.AlSize + 1;
offset = opAst.Imm11;
indexed = opAst.Phys;
@@ -287,7 +286,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
}
else if (name == InstName.Ald)
{
- InstAld opAld = new InstAld(opCode);
+ InstAld opAld = new(opCode);
count = (int)opAld.AlSize + 1;
offset = opAld.Imm11;
indexed = opAld.Phys;
@@ -296,7 +295,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
}
else /* if (name == InstName.Ipa) */
{
- InstIpa opIpa = new InstIpa(opCode);
+ InstIpa opIpa = new(opCode);
offset = opIpa.Imm10;
indexed = opIpa.Idx;
}
@@ -370,7 +369,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
private static bool IsUnconditional(ref InstOp op)
{
- InstConditional condOp = new InstConditional(op.RawOpCode);
+ InstConditional condOp = new(op.RawOpCode);
if ((op.Name == InstName.Bra || op.Name == InstName.Exit) && condOp.Ccc != Ccc.T)
{
@@ -391,9 +390,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
if (lastOp.Name == InstName.Brx && block.Successors.Count == (hasNext ? 1 : 0))
{
- HashSet<ulong> visited = new HashSet<ulong>();
+ HashSet<ulong> visited = new();
- InstBrx opBrx = new InstBrx(lastOp.RawOpCode);
+ InstBrx opBrx = new(lastOp.RawOpCode);
ulong baseOffset = lastOp.GetAbsoluteAddress();
// An indirect branch could go anywhere,
@@ -437,7 +436,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
// 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>();
+ HashSet<Block> visited = new();
var ldcLocation = FindFirstRegWrite(visited, new BlockLocation(block, block.OpCodes.Count - 1), brxReg);
if (ldcLocation.Block == null || ldcLocation.Block.OpCodes[ldcLocation.Index].Name != InstName.Ldc)
@@ -507,7 +506,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
private static BlockLocation FindFirstRegWrite(HashSet<Block> visited, BlockLocation location, int regIndex)
{
- Queue<BlockLocation> toVisit = new Queue<BlockLocation>();
+ Queue<BlockLocation> toVisit = new();
toVisit.Enqueue(location);
visited.Add(location.Block);
@@ -554,10 +553,10 @@ namespace Ryujinx.Graphics.Shader.Decoders
{
Brk,
Cont,
- Sync
+ Sync,
}
- private struct PathBlockState
+ private readonly struct PathBlockState
{
public Block Block { get; }
@@ -565,37 +564,37 @@ namespace Ryujinx.Graphics.Shader.Decoders
{
None,
PopPushOp,
- PushBranchOp
+ PushBranchOp,
}
- private RestoreType _restoreType;
+ private readonly RestoreType _restoreType;
- private ulong _restoreValue;
- private MergeType _restoreMergeType;
+ private readonly ulong _restoreValue;
+ private readonly MergeType _restoreMergeType;
public bool ReturningFromVisit => _restoreType != RestoreType.None;
public PathBlockState(Block block)
{
- Block = block;
- _restoreType = RestoreType.None;
- _restoreValue = 0;
+ Block = block;
+ _restoreType = RestoreType.None;
+ _restoreValue = 0;
_restoreMergeType = default;
}
public PathBlockState(int oldStackSize)
{
- Block = null;
- _restoreType = RestoreType.PopPushOp;
- _restoreValue = (ulong)oldStackSize;
+ Block = null;
+ _restoreType = RestoreType.PopPushOp;
+ _restoreValue = (ulong)oldStackSize;
_restoreMergeType = default;
}
public PathBlockState(ulong syncAddress, MergeType mergeType)
{
- Block = null;
- _restoreType = RestoreType.PushBranchOp;
- _restoreValue = syncAddress;
+ Block = null;
+ _restoreType = RestoreType.PushBranchOp;
+ _restoreValue = syncAddress;
_restoreMergeType = mergeType;
}
@@ -622,9 +621,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
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)>();
+ Stack<PathBlockState> workQueue = new();
+ HashSet<Block> visited = new();
+ Stack<(ulong, MergeType)> branchStack = new();
void Push(PathBlockState pbs)
{
@@ -759,7 +758,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
{
InstName.Pbk => MergeType.Brk,
InstName.Pcnt => MergeType.Cont,
- _ => MergeType.Sync
+ _ => MergeType.Sync,
};
}
@@ -769,8 +768,8 @@ namespace Ryujinx.Graphics.Shader.Decoders
{
InstName.Brk => MergeType.Brk,
InstName.Cont => MergeType.Cont,
- _ => MergeType.Sync
+ _ => MergeType.Sync,
};
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs b/src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs
index c7c506ec..8bf5671a 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/InstDecoders.cs
@@ -684,7 +684,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
Texture2DLodZeroMultisample = 0x6,
Texture3DLodZero = 0x7,
Texture2DArrayLodZero = 0x8,
- Texture2DLodLevelOffset = 0xc
+ Texture2DLodLevelOffset = 0xc,
}
enum TexComp
@@ -848,18 +848,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
S16h0 = 3,
}
- struct InstConditional
+ readonly struct InstConditional
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstConditional(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
public Ccc Ccc => (Ccc)(_opcode & 0x1F);
}
- struct InstAl2p
+ readonly struct InstAl2p
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstAl2p(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -871,9 +871,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPred => (int)((_opcode >> 44) & 0x7);
}
- struct InstAld
+ readonly struct InstAld
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstAld(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -887,9 +887,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Phys => !P && Imm11 == 0 && SrcA != RegisterConsts.RegisterZeroIndex;
}
- struct InstAst
+ readonly struct InstAst
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstAst(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int SrcB => (int)(_opcode & 0xFF);
@@ -902,9 +902,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Phys => !P && Imm11 == 0 && SrcA != RegisterConsts.RegisterZeroIndex;
}
- struct InstAtom
+ readonly struct InstAtom
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstAtom(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -917,9 +917,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool E => (_opcode & 0x1000000000000) != 0;
}
- struct InstAtomCas
+ readonly struct InstAtomCas
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstAtomCas(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -930,9 +930,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool E => (_opcode & 0x1000000000000) != 0;
}
- struct InstAtoms
+ readonly struct InstAtoms
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstAtoms(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -944,9 +944,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public AtomOp AtomOp => (AtomOp)((_opcode >> 52) & 0xF);
}
- struct InstAtomsCas
+ readonly struct InstAtomsCas
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstAtomsCas(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -956,9 +956,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int AtomsBcRz => (int)((_opcode >> 28) & 0x3);
}
- struct InstB2r
+ readonly struct InstB2r
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstB2r(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int DestPred => (int)((_opcode >> 45) & 0x7);
@@ -968,9 +968,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public BarMode Mode => (BarMode)((_opcode >> 32) & 0x3);
}
- struct InstBar
+ readonly struct InstBar
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBar(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int Imm12 => (int)((_opcode >> 20) & 0xFFF);
@@ -984,9 +984,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BFixBar => (_opcode & 0x80000000000) != 0;
}
- struct InstBfeR
+ readonly struct InstBfeR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBfeR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -998,9 +998,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Brev => (_opcode & 0x10000000000) != 0;
}
- struct InstBfeI
+ readonly struct InstBfeI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBfeI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1012,9 +1012,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Brev => (_opcode & 0x10000000000) != 0;
}
- struct InstBfeC
+ readonly struct InstBfeC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBfeC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1027,9 +1027,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Brev => (_opcode & 0x10000000000) != 0;
}
- struct InstBfiR
+ readonly struct InstBfiR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBfiR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1040,9 +1040,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool WriteCC => (_opcode & 0x800000000000) != 0;
}
- struct InstBfiI
+ readonly struct InstBfiI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBfiI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1053,9 +1053,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool WriteCC => (_opcode & 0x800000000000) != 0;
}
- struct InstBfiC
+ readonly struct InstBfiC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBfiC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1067,9 +1067,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool WriteCC => (_opcode & 0x800000000000) != 0;
}
- struct InstBfiRc
+ readonly struct InstBfiRc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBfiRc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1081,17 +1081,17 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool WriteCC => (_opcode & 0x800000000000) != 0;
}
- struct InstBpt
+ readonly struct InstBpt
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBpt(ulong opcode) => _opcode = opcode;
public int Imm20 => (int)((_opcode >> 20) & 0xFFFFF);
public Bpt Bpt => (Bpt)((_opcode >> 6) & 0x7);
}
- struct InstBra
+ readonly struct InstBra
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBra(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
@@ -1102,18 +1102,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool U => (_opcode & 0x80) != 0;
}
- struct InstBrk
+ readonly struct InstBrk
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBrk(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
public Ccc Ccc => (Ccc)(_opcode & 0x1F);
}
- struct InstBrx
+ readonly struct InstBrx
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstBrx(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -1124,18 +1124,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Lmt => (_opcode & 0x40) != 0;
}
- struct InstCal
+ readonly struct InstCal
{
- private ulong _opcode;
+ private readonly 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
+ readonly struct InstCctl
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstCctl(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -1146,9 +1146,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public CctlOp CctlOp => (CctlOp)(_opcode & 0xF);
}
- struct InstCctll
+ readonly struct InstCctll
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstCctll(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -1158,9 +1158,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public CctlOp CctlOp => (CctlOp)(_opcode & 0xF);
}
- struct InstCctlt
+ readonly struct InstCctlt
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstCctlt(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
@@ -1168,26 +1168,26 @@ namespace Ryujinx.Graphics.Shader.Decoders
public CctltOp CctltOp => (CctltOp)(_opcode & 0x3);
}
- struct InstCctltR
+ readonly struct InstCctltR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstCctltR(ulong opcode) => _opcode = opcode;
public int SrcC => (int)((_opcode >> 39) & 0xFF);
public CctltOp CctltOp => (CctltOp)(_opcode & 0x3);
}
- struct InstCont
+ readonly struct InstCont
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstCont(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
public Ccc Ccc => (Ccc)(_opcode & 0x1F);
}
- struct InstCset
+ readonly struct InstCset
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstCset(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -1200,9 +1200,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
}
- struct InstCsetp
+ readonly struct InstCsetp
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstCsetp(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
@@ -1215,9 +1215,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public BoolOp Bop => (BoolOp)((_opcode >> 45) & 0x3);
}
- struct InstCs2r
+ readonly struct InstCs2r
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstCs2r(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -1225,9 +1225,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SReg SReg => (SReg)((_opcode >> 20) & 0xFF);
}
- struct InstDaddR
+ readonly struct InstDaddR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDaddR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1242,9 +1242,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
}
- struct InstDaddI
+ readonly struct InstDaddI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDaddI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1259,9 +1259,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
}
- struct InstDaddC
+ readonly struct InstDaddC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDaddC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1277,9 +1277,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
}
- struct InstDepbar
+ readonly struct InstDepbar
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDepbar(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
@@ -1289,9 +1289,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm6 => (int)(_opcode & 0x3F);
}
- struct InstDfmaR
+ readonly struct InstDfmaR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDfmaR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1305,9 +1305,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegA => (_opcode & 0x1000000000000) != 0;
}
- struct InstDfmaI
+ readonly struct InstDfmaI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDfmaI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1321,9 +1321,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegA => (_opcode & 0x1000000000000) != 0;
}
- struct InstDfmaC
+ readonly struct InstDfmaC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDfmaC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1338,9 +1338,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegA => (_opcode & 0x1000000000000) != 0;
}
- struct InstDfmaRc
+ readonly struct InstDfmaRc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDfmaRc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1355,9 +1355,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegA => (_opcode & 0x1000000000000) != 0;
}
- struct InstDmnmxR
+ readonly struct InstDmnmxR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDmnmxR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1373,9 +1373,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstDmnmxI
+ readonly struct InstDmnmxI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDmnmxI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1391,9 +1391,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstDmnmxC
+ readonly struct InstDmnmxC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDmnmxC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1410,9 +1410,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstDmulR
+ readonly struct InstDmulR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDmulR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1424,9 +1424,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegA => (_opcode & 0x1000000000000) != 0;
}
- struct InstDmulI
+ readonly struct InstDmulI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDmulI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1438,9 +1438,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegA => (_opcode & 0x1000000000000) != 0;
}
- struct InstDmulC
+ readonly struct InstDmulC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDmulC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1453,9 +1453,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegA => (_opcode & 0x1000000000000) != 0;
}
- struct InstDsetR
+ readonly struct InstDsetR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDsetR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1474,9 +1474,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstDsetI
+ readonly struct InstDsetI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDsetI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1495,9 +1495,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstDsetC
+ readonly struct InstDsetC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDsetC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1517,9 +1517,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstDsetpR
+ readonly struct InstDsetpR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDsetpR(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -1537,9 +1537,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPredInv => (int)(_opcode & 0x7);
}
- struct InstDsetpI
+ readonly struct InstDsetpI
{
- private ulong _opcode;
+ private readonly 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);
@@ -1557,9 +1557,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPredInv => (int)(_opcode & 0x7);
}
- struct InstDsetpC
+ readonly struct InstDsetpC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstDsetpC(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -1578,9 +1578,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPredInv => (int)(_opcode & 0x7);
}
- struct InstExit
+ readonly struct InstExit
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstExit(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
@@ -1588,9 +1588,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool KeepRefCnt => (_opcode & 0x20) != 0;
}
- struct InstF2fR
+ readonly struct InstF2fR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstF2fR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -1607,9 +1607,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Sat => (_opcode & 0x4000000000000) != 0;
}
- struct InstF2fI
+ readonly struct InstF2fI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstF2fI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
@@ -1626,9 +1626,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Sat => (_opcode & 0x4000000000000) != 0;
}
- struct InstF2fC
+ readonly struct InstF2fC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstF2fC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -1646,9 +1646,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Sat => (_opcode & 0x4000000000000) != 0;
}
- struct InstF2iR
+ readonly struct InstF2iR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstF2iR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -1664,9 +1664,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
}
- struct InstF2iI
+ readonly struct InstF2iI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstF2iI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
@@ -1682,9 +1682,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
}
- struct InstF2iC
+ readonly struct InstF2iC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstF2iC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -1701,9 +1701,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RoundMode2 RoundMode => (RoundMode2)((_opcode >> 39) & 0x3);
}
- struct InstFaddR
+ readonly struct InstFaddR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFaddR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1720,9 +1720,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
}
- struct InstFaddI
+ readonly struct InstFaddI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFaddI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1739,9 +1739,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
}
- struct InstFaddC
+ readonly struct InstFaddC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFaddC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1759,9 +1759,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RoundMode RoundMode => (RoundMode)((_opcode >> 39) & 0x3);
}
- struct InstFadd32i
+ readonly struct InstFadd32i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFadd32i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1776,9 +1776,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x20000000000000) != 0;
}
- struct InstFchkR
+ readonly struct InstFchkR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFchkR(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1792,9 +1792,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
}
- struct InstFchkI
+ readonly struct InstFchkI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFchkI(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1808,9 +1808,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
}
- struct InstFchkC
+ readonly struct InstFchkC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFchkC(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1825,9 +1825,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ChkModeF ChkModeF => (ChkModeF)((_opcode >> 39) & 0x3F);
}
- struct InstFcmpR
+ readonly struct InstFcmpR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFcmpR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1839,9 +1839,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x800000000000) != 0;
}
- struct InstFcmpI
+ readonly struct InstFcmpI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFcmpI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1853,9 +1853,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x800000000000) != 0;
}
- struct InstFcmpC
+ readonly struct InstFcmpC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFcmpC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1868,9 +1868,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x800000000000) != 0;
}
- struct InstFcmpRc
+ readonly struct InstFcmpRc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFcmpRc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1883,9 +1883,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x800000000000) != 0;
}
- struct InstFfmaR
+ readonly struct InstFfmaR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFfmaR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1901,9 +1901,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
}
- struct InstFfmaI
+ readonly struct InstFfmaI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFfmaI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1919,9 +1919,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
}
- struct InstFfmaC
+ readonly struct InstFfmaC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFfmaC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1938,9 +1938,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
}
- struct InstFfmaRc
+ readonly struct InstFfmaRc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFfmaRc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1957,9 +1957,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
}
- struct InstFfma32i
+ readonly struct InstFfma32i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFfma32i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -1973,9 +1973,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 53) & 0x3);
}
- struct InstFloR
+ readonly struct InstFloR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFloR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -1987,9 +1987,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x10000000000) != 0;
}
- struct InstFloI
+ readonly struct InstFloI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFloI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
@@ -2001,9 +2001,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x10000000000) != 0;
}
- struct InstFloC
+ readonly struct InstFloC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFloC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -2016,9 +2016,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x10000000000) != 0;
}
- struct InstFmnmxR
+ readonly struct InstFmnmxR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFmnmxR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2035,9 +2035,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstFmnmxI
+ readonly struct InstFmnmxI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFmnmxI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2054,9 +2054,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstFmnmxC
+ readonly struct InstFmnmxC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFmnmxC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2074,9 +2074,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstFmulR
+ readonly struct InstFmulR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFmulR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2091,9 +2091,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Sat => (_opcode & 0x4000000000000) != 0;
}
- struct InstFmulI
+ readonly struct InstFmulI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFmulI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2108,9 +2108,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Sat => (_opcode & 0x4000000000000) != 0;
}
- struct InstFmulC
+ readonly struct InstFmulC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFmulC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2126,9 +2126,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Sat => (_opcode & 0x4000000000000) != 0;
}
- struct InstFmul32i
+ readonly struct InstFmul32i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFmul32i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2140,9 +2140,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
}
- struct InstFsetR
+ readonly struct InstFsetR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFsetR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2162,9 +2162,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVal => (_opcode & 0x10000000000000) != 0;
}
- struct InstFsetC
+ readonly struct InstFsetC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFsetC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2185,9 +2185,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVal => (_opcode & 0x10000000000000) != 0;
}
- struct InstFsetI
+ readonly struct InstFsetI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFsetI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2207,9 +2207,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVal => (_opcode & 0x10000000000000) != 0;
}
- struct InstFsetpR
+ readonly struct InstFsetpR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFsetpR(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int DestPredInv => (int)(_opcode & 0x7);
@@ -2229,9 +2229,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x800000000000) != 0;
}
- struct InstFsetpI
+ readonly struct InstFsetpI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFsetpI(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int DestPredInv => (int)(_opcode & 0x7);
@@ -2251,9 +2251,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x800000000000) != 0;
}
- struct InstFsetpC
+ readonly struct InstFsetpC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFsetpC(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int DestPredInv => (int)(_opcode & 0x7);
@@ -2274,9 +2274,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x800000000000) != 0;
}
- struct InstFswzadd
+ readonly struct InstFswzadd
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstFswzadd(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2290,23 +2290,23 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int PnWord => (int)((_opcode >> 28) & 0xFF);
}
- struct InstGetcrsptr
+ readonly struct InstGetcrsptr
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstGetcrsptr(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
}
- struct InstGetlmembase
+ readonly struct InstGetlmembase
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstGetlmembase(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
}
- struct InstHadd2R
+ readonly struct InstHadd2R
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHadd2R(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2324,9 +2324,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x8000000000) != 0;
}
- struct InstHadd2I
+ readonly struct InstHadd2I
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHadd2I(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2342,9 +2342,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x8000000000) != 0;
}
- struct InstHadd2C
+ readonly struct InstHadd2C
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHadd2C(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2362,9 +2362,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x8000000000) != 0;
}
- struct InstHadd232i
+ readonly struct InstHadd232i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHadd232i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2377,9 +2377,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x80000000000000) != 0;
}
- struct InstHfma2R
+ readonly struct InstHfma2R
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHfma2R(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2397,9 +2397,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 37) & 0x3);
}
- struct InstHfma2I
+ readonly struct InstHfma2I
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHfma2I(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2416,9 +2416,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
}
- struct InstHfma2C
+ readonly struct InstHfma2C
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHfma2C(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2436,9 +2436,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
}
- struct InstHfma2Rc
+ readonly struct InstHfma2Rc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHfma2Rc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2456,9 +2456,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
}
- struct InstHfma232i
+ readonly struct InstHfma232i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHfma232i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2470,9 +2470,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 57) & 0x3);
}
- struct InstHmul2R
+ readonly struct InstHmul2R
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHmul2R(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2489,9 +2489,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
}
- struct InstHmul2I
+ readonly struct InstHmul2I
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHmul2I(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2507,9 +2507,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
}
- struct InstHmul2C
+ readonly struct InstHmul2C
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHmul2C(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2526,9 +2526,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 39) & 0x3);
}
- struct InstHmul232i
+ readonly struct InstHmul232i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHmul232i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2540,9 +2540,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Fmz Fmz => (Fmz)((_opcode >> 55) & 0x3);
}
- struct InstHset2R
+ readonly struct InstHset2R
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHset2R(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2563,9 +2563,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x4000000000000) != 0;
}
- struct InstHset2I
+ readonly struct InstHset2I
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHset2I(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2584,9 +2584,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x40000000000000) != 0;
}
- struct InstHset2C
+ readonly struct InstHset2C
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHset2C(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2606,9 +2606,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ftz => (_opcode & 0x40000000000000) != 0;
}
- struct InstHsetp2R
+ readonly struct InstHsetp2R
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHsetp2R(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int DestPredInv => (int)(_opcode & 0x7);
@@ -2630,9 +2630,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public HalfSwizzle BSwizzle => (HalfSwizzle)((_opcode >> 28) & 0x3);
}
- struct InstHsetp2I
+ readonly struct InstHsetp2I
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHsetp2I(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int DestPredInv => (int)(_opcode & 0x7);
@@ -2652,9 +2652,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
}
- struct InstHsetp2C
+ readonly struct InstHsetp2C
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstHsetp2C(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int DestPredInv => (int)(_opcode & 0x7);
@@ -2676,9 +2676,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public HalfSwizzle ASwizzle => (HalfSwizzle)((_opcode >> 47) & 0x3);
}
- struct InstI2fR
+ readonly struct InstI2fR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstI2fR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -2693,9 +2693,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
}
- struct InstI2fI
+ readonly struct InstI2fI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstI2fI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
@@ -2710,9 +2710,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
}
- struct InstI2fC
+ readonly struct InstI2fC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstI2fC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -2728,9 +2728,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public DstFmt DstFmt => (DstFmt)((_opcode >> 8) & 0x3);
}
- struct InstI2iR
+ readonly struct InstI2iR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstI2iR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -2745,9 +2745,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ISrcDstFmt ISrcFmt => (ISrcDstFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
}
- struct InstI2iI
+ readonly struct InstI2iI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstI2iI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
@@ -2762,9 +2762,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ISrcDstFmt ISrcFmt => (ISrcDstFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
}
- struct InstI2iC
+ readonly struct InstI2iC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstI2iC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -2780,9 +2780,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ISrcDstFmt ISrcFmt => (ISrcDstFmt)((int)((_opcode >> 11) & 0x4) | (int)((_opcode >> 10) & 0x3));
}
- struct InstIaddR
+ readonly struct InstIaddR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIaddR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2795,9 +2795,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool X => (_opcode & 0x80000000000) != 0;
}
- struct InstIaddI
+ readonly struct InstIaddI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIaddI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2810,9 +2810,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool X => (_opcode & 0x80000000000) != 0;
}
- struct InstIaddC
+ readonly struct InstIaddC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIaddC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2826,9 +2826,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool X => (_opcode & 0x80000000000) != 0;
}
- struct InstIadd32i
+ readonly struct InstIadd32i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIadd32i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2841,9 +2841,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool X => (_opcode & 0x20000000000000) != 0;
}
- struct InstIadd3R
+ readonly struct InstIadd3R
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIadd3R(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2862,9 +2862,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public HalfSelect Cpart => (HalfSelect)((_opcode >> 31) & 0x3);
}
- struct InstIadd3I
+ readonly struct InstIadd3I
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIadd3I(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2879,9 +2879,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool X => (_opcode & 0x1000000000000) != 0;
}
- struct InstIadd3C
+ readonly struct InstIadd3C
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIadd3C(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2897,9 +2897,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool X => (_opcode & 0x1000000000000) != 0;
}
- struct InstIcmpR
+ readonly struct InstIcmpR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIcmpR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2911,9 +2911,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Signed => (_opcode & 0x1000000000000) != 0;
}
- struct InstIcmpI
+ readonly struct InstIcmpI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIcmpI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2925,9 +2925,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Signed => (_opcode & 0x1000000000000) != 0;
}
- struct InstIcmpC
+ readonly struct InstIcmpC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIcmpC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2940,9 +2940,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Signed => (_opcode & 0x1000000000000) != 0;
}
- struct InstIcmpRc
+ readonly struct InstIcmpRc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIcmpRc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2955,17 +2955,17 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Signed => (_opcode & 0x1000000000000) != 0;
}
- struct InstIde
+ readonly struct InstIde
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIde(ulong opcode) => _opcode = opcode;
public int Imm16 => (int)((_opcode >> 20) & 0xFFFF);
public bool Di => (_opcode & 0x20) != 0;
}
- struct InstIdpR
+ readonly struct InstIdpR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIdpR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2979,9 +2979,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcBSign => (_opcode & 0x800000000000) != 0;
}
- struct InstIdpC
+ readonly struct InstIdpC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIdpC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -2996,9 +2996,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcBSign => (_opcode & 0x800000000000) != 0;
}
- struct InstImadR
+ readonly struct InstImadR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImadR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3015,9 +3015,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool ASigned => (_opcode & 0x1000000000000) != 0;
}
- struct InstImadI
+ readonly struct InstImadI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImadI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3034,9 +3034,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool ASigned => (_opcode & 0x1000000000000) != 0;
}
- struct InstImadC
+ readonly struct InstImadC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImadC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3054,9 +3054,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool ASigned => (_opcode & 0x1000000000000) != 0;
}
- struct InstImadRc
+ readonly struct InstImadRc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImadRc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3074,9 +3074,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool ASigned => (_opcode & 0x1000000000000) != 0;
}
- struct InstImad32i
+ readonly struct InstImad32i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImad32i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3090,9 +3090,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Hilo => (_opcode & 0x20000000000000) != 0;
}
- struct InstImadspR
+ readonly struct InstImadspR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImadspR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3105,9 +3105,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
}
- struct InstImadspI
+ readonly struct InstImadspI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImadspI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3120,9 +3120,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
}
- struct InstImadspC
+ readonly struct InstImadspC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImadspC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3136,9 +3136,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
}
- struct InstImadspRc
+ readonly struct InstImadspRc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImadspRc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3152,9 +3152,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public ImadspASelect CSelect => (ImadspASelect)((int)((_opcode >> 50) & 0x6) | (int)((_opcode >> 48) & 0x1));
}
- struct InstImnmxR
+ readonly struct InstImnmxR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImnmxR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3168,9 +3168,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstImnmxI
+ readonly struct InstImnmxI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImnmxI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3184,9 +3184,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstImnmxC
+ readonly struct InstImnmxC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImnmxC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3201,9 +3201,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstImulR
+ readonly struct InstImulR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImulR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3216,9 +3216,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Hilo => (_opcode & 0x8000000000) != 0;
}
- struct InstImulI
+ readonly struct InstImulI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImulI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3231,9 +3231,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Hilo => (_opcode & 0x8000000000) != 0;
}
- struct InstImulC
+ readonly struct InstImulC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImulC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3247,9 +3247,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Hilo => (_opcode & 0x8000000000) != 0;
}
- struct InstImul32i
+ readonly struct InstImul32i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstImul32i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3262,9 +3262,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool WriteCC => (_opcode & 0x10000000000000) != 0;
}
- struct InstIpa
+ readonly struct InstIpa
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIpa(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3281,9 +3281,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x4000000000000) != 0;
}
- struct InstIsberd
+ readonly struct InstIsberd
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIsberd(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3295,9 +3295,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool P => (_opcode & 0x80000000) != 0;
}
- struct InstIscaddR
+ readonly struct InstIscaddR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIscaddR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3309,9 +3309,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
}
- struct InstIscaddI
+ readonly struct InstIscaddI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIscaddI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3323,9 +3323,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
}
- struct InstIscaddC
+ readonly struct InstIscaddC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIscaddC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3338,9 +3338,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public AvgMode AvgMode => (AvgMode)((_opcode >> 48) & 0x3);
}
- struct InstIscadd32i
+ readonly struct InstIscadd32i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIscadd32i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3351,9 +3351,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm5 => (int)((_opcode >> 53) & 0x1F);
}
- struct InstIsetR
+ readonly struct InstIsetR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIsetR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3370,9 +3370,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool X => (_opcode & 0x80000000000) != 0;
}
- struct InstIsetI
+ readonly struct InstIsetI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIsetI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3389,9 +3389,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool X => (_opcode & 0x80000000000) != 0;
}
- struct InstIsetC
+ readonly struct InstIsetC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIsetC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3409,9 +3409,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool X => (_opcode & 0x80000000000) != 0;
}
- struct InstIsetpR
+ readonly struct InstIsetpR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIsetpR(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -3427,9 +3427,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPredInv => (int)(_opcode & 0x7);
}
- struct InstIsetpI
+ readonly struct InstIsetpI
{
- private ulong _opcode;
+ private readonly 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);
@@ -3445,9 +3445,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPredInv => (int)(_opcode & 0x7);
}
- struct InstIsetpC
+ readonly struct InstIsetpC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstIsetpC(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -3464,18 +3464,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPredInv => (int)(_opcode & 0x7);
}
- struct InstJcal
+ readonly struct InstJcal
{
- private ulong _opcode;
+ private readonly 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
+ readonly struct InstJmp
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstJmp(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -3487,9 +3487,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool U => (_opcode & 0x80) != 0;
}
- struct InstJmx
+ readonly struct InstJmx
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstJmx(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -3500,18 +3500,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Lmt => (_opcode & 0x40) != 0;
}
- struct InstKil
+ readonly struct InstKil
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstKil(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
public Ccc Ccc => (Ccc)(_opcode & 0x1F);
}
- struct InstLd
+ readonly struct InstLd
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLd(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3524,9 +3524,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm32 => (int)(_opcode >> 20);
}
- struct InstLdc
+ readonly struct InstLdc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLdc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3538,9 +3538,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int CbufOffset => (int)((_opcode >> 20) & 0xFFFF);
}
- struct InstLdg
+ readonly struct InstLdg
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLdg(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3552,9 +3552,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
}
- struct InstLdl
+ readonly struct InstLdl
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLdl(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3565,9 +3565,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
}
- struct InstLds
+ readonly struct InstLds
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLds(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3578,9 +3578,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
}
- struct InstLeaR
+ readonly struct InstLeaR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLeaR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3594,9 +3594,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPred => (int)((_opcode >> 48) & 0x7);
}
- struct InstLeaI
+ readonly struct InstLeaI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLeaI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3610,9 +3610,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPred => (int)((_opcode >> 48) & 0x7);
}
- struct InstLeaC
+ readonly struct InstLeaC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLeaC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3627,9 +3627,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPred => (int)((_opcode >> 48) & 0x7);
}
- struct InstLeaHiR
+ readonly struct InstLeaHiR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLeaHiR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3644,9 +3644,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPred => (int)((_opcode >> 48) & 0x7);
}
- struct InstLeaHiC
+ readonly struct InstLeaHiC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLeaHiC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3662,22 +3662,24 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPred => (int)((_opcode >> 48) & 0x7);
}
- struct InstLepc
+ readonly struct InstLepc
{
- private ulong _opcode;
+#pragma warning disable IDE0052 // Remove unread private member
+ private readonly ulong _opcode;
+#pragma warning restore IDE0052
public InstLepc(ulong opcode) => _opcode = opcode;
}
- struct InstLongjmp
+ readonly struct InstLongjmp
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLongjmp(ulong opcode) => _opcode = opcode;
public Ccc Ccc => (Ccc)(_opcode & 0x1F);
}
- struct InstLopR
+ readonly struct InstLopR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLopR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3693,9 +3695,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x10000000000) != 0;
}
- struct InstLopI
+ readonly struct InstLopI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLopI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3711,9 +3713,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x10000000000) != 0;
}
- struct InstLopC
+ readonly struct InstLopC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLopC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3730,9 +3732,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x10000000000) != 0;
}
- struct InstLop3R
+ readonly struct InstLop3R
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLop3R(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3747,9 +3749,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm => (int)((_opcode >> 28) & 0xFF);
}
- struct InstLop3I
+ readonly struct InstLop3I
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLop3I(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3762,9 +3764,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm => (int)((_opcode >> 48) & 0xFF);
}
- struct InstLop3C
+ readonly struct InstLop3C
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLop3C(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3778,9 +3780,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm => (int)((_opcode >> 48) & 0xFF);
}
- struct InstLop32i
+ readonly struct InstLop32i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstLop32i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3794,9 +3796,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x100000000000000) != 0;
}
- struct InstMembar
+ readonly struct InstMembar
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstMembar(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
@@ -3804,9 +3806,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Ivall Ivall => (Ivall)(_opcode & 0x3);
}
- struct InstMovR
+ readonly struct InstMovR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstMovR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 20) & 0xFF);
@@ -3815,9 +3817,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int QuadMask => (int)((_opcode >> 39) & 0xF);
}
- struct InstMovI
+ readonly struct InstMovI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstMovI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
@@ -3826,9 +3828,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int QuadMask => (int)((_opcode >> 39) & 0xF);
}
- struct InstMovC
+ readonly struct InstMovC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstMovC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -3838,9 +3840,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int QuadMask => (int)((_opcode >> 39) & 0xF);
}
- struct InstMov32i
+ readonly struct InstMov32i
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstMov32i(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Imm32 => (int)(_opcode >> 20);
@@ -3849,9 +3851,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int QuadMask => (int)((_opcode >> 12) & 0xF);
}
- struct InstMufu
+ readonly struct InstMufu
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstMufu(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3863,9 +3865,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Sat => (_opcode & 0x4000000000000) != 0;
}
- struct InstNop
+ readonly struct InstNop
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstNop(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
@@ -3874,9 +3876,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public Ccc Ccc => (Ccc)((_opcode >> 8) & 0x1F);
}
- struct InstOutR
+ readonly struct InstOutR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstOutR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3886,9 +3888,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
}
- struct InstOutI
+ readonly struct InstOutI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstOutI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3898,9 +3900,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
}
- struct InstOutC
+ readonly struct InstOutC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstOutC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3911,9 +3913,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public OutType OutType => (OutType)((_opcode >> 39) & 0x3);
}
- struct InstP2rR
+ readonly struct InstP2rR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstP2rR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3924,9 +3926,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ccpr => (_opcode & 0x10000000000) != 0;
}
- struct InstP2rI
+ readonly struct InstP2rI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstP2rI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3937,9 +3939,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ccpr => (_opcode & 0x10000000000) != 0;
}
- struct InstP2rC
+ readonly struct InstP2rC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstP2rC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3951,32 +3953,32 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ccpr => (_opcode & 0x10000000000) != 0;
}
- struct InstPbk
+ readonly struct InstPbk
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPbk(ulong opcode) => _opcode = opcode;
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
public bool Ca => (_opcode & 0x20) != 0;
}
- struct InstPcnt
+ readonly struct InstPcnt
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPcnt(ulong opcode) => _opcode = opcode;
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
public bool Ca => (_opcode & 0x20) != 0;
}
- struct InstPexit
+ readonly struct InstPexit
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPexit(ulong opcode) => _opcode = opcode;
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
}
- struct InstPixld
+ readonly struct InstPixld
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPixld(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -3987,17 +3989,17 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm8 => (int)((_opcode >> 20) & 0xFF);
}
- struct InstPlongjmp
+ readonly struct InstPlongjmp
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPlongjmp(ulong opcode) => _opcode = opcode;
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
public bool Ca => (_opcode & 0x20) != 0;
}
- struct InstPopcR
+ readonly struct InstPopcR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPopcR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -4006,9 +4008,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x10000000000) != 0;
}
- struct InstPopcI
+ readonly struct InstPopcI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPopcI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
@@ -4017,9 +4019,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x10000000000) != 0;
}
- struct InstPopcC
+ readonly struct InstPopcC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPopcC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -4029,18 +4031,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool NegB => (_opcode & 0x10000000000) != 0;
}
- struct InstPret
+ readonly struct InstPret
{
- private ulong _opcode;
+ private readonly 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
+ readonly struct InstPrmtR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPrmtR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4051,9 +4053,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
}
- struct InstPrmtI
+ readonly struct InstPrmtI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPrmtI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4064,9 +4066,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
}
- struct InstPrmtC
+ readonly struct InstPrmtC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPrmtC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4078,9 +4080,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
}
- struct InstPrmtRc
+ readonly struct InstPrmtRc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPrmtRc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4092,9 +4094,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public PMode PMode => (PMode)((_opcode >> 48) & 0xF);
}
- struct InstPset
+ readonly struct InstPset
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPset(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -4111,9 +4113,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVal => (_opcode & 0x100000000000) != 0;
}
- struct InstPsetp
+ readonly struct InstPsetp
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstPsetp(ulong opcode) => _opcode = opcode;
public int DestPred => (int)((_opcode >> 3) & 0x7);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -4129,9 +4131,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public BoolOp BoolOpC => (BoolOp)((_opcode >> 45) & 0x3);
}
- struct InstR2b
+ readonly struct InstR2b
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstR2b(ulong opcode) => _opcode = opcode;
public int SrcB => (int)((_opcode >> 20) & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -4140,9 +4142,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Name => (int)((_opcode >> 28) & 0xF);
}
- struct InstR2pR
+ readonly struct InstR2pR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstR2pR(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -4152,9 +4154,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ccpr => (_opcode & 0x10000000000) != 0;
}
- struct InstR2pI
+ readonly struct InstR2pI
{
- private ulong _opcode;
+ private readonly 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);
@@ -4164,9 +4166,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ccpr => (_opcode & 0x10000000000) != 0;
}
- struct InstR2pC
+ readonly struct InstR2pC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstR2pC(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -4177,15 +4179,17 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ccpr => (_opcode & 0x10000000000) != 0;
}
- struct InstRam
+ readonly struct InstRam
{
- private ulong _opcode;
+#pragma warning disable IDE0052 // Remove unread private member
+ private readonly ulong _opcode;
+#pragma warning restore IDE0052
public InstRam(ulong opcode) => _opcode = opcode;
}
- struct InstRed
+ readonly struct InstRed
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstRed(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int SrcB => (int)(_opcode & 0xFF);
@@ -4197,18 +4201,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool E => (_opcode & 0x1000000000000) != 0;
}
- struct InstRet
+ readonly struct InstRet
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstRet(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
public Ccc Ccc => (Ccc)(_opcode & 0x1F);
}
- struct InstRroR
+ readonly struct InstRroR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstRroR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -4219,9 +4223,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool RroOp => (_opcode & 0x8000000000) != 0;
}
- struct InstRroI
+ readonly struct InstRroI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstRroI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Imm20 => (int)((_opcode >> 37) & 0x80000) | (int)((_opcode >> 20) & 0x7FFFF);
@@ -4232,9 +4236,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool RroOp => (_opcode & 0x8000000000) != 0;
}
- struct InstRroC
+ readonly struct InstRroC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstRroC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int CbufSlot => (int)((_opcode >> 34) & 0x1F);
@@ -4246,15 +4250,17 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool RroOp => (_opcode & 0x8000000000) != 0;
}
- struct InstRtt
+ readonly struct InstRtt
{
- private ulong _opcode;
+#pragma warning disable IDE0052 // Remove unread private member
+ private readonly ulong _opcode;
+#pragma warning restore IDE0052
public InstRtt(ulong opcode) => _opcode = opcode;
}
- struct InstS2r
+ readonly struct InstS2r
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstS2r(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -4262,15 +4268,17 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SReg SReg => (SReg)((_opcode >> 20) & 0xFF);
}
- struct InstSam
+ readonly struct InstSam
{
- private ulong _opcode;
+#pragma warning disable IDE0052 // Remove unread private member
+ private readonly ulong _opcode;
+#pragma warning restore IDE0052
public InstSam(ulong opcode) => _opcode = opcode;
}
- struct InstSelR
+ readonly struct InstSelR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSelR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4281,9 +4289,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstSelI
+ readonly struct InstSelI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSelI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4294,9 +4302,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstSelC
+ readonly struct InstSelC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSelC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4308,23 +4316,23 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool SrcPredInv => (_opcode & 0x40000000000) != 0;
}
- struct InstSetcrsptr
+ readonly struct InstSetcrsptr
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSetcrsptr(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
}
- struct InstSetlmembase
+ readonly struct InstSetlmembase
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSetlmembase(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
}
- struct InstShfLR
+ readonly struct InstShfLR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShfLR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4338,9 +4346,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
}
- struct InstShfRR
+ readonly struct InstShfRR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShfRR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4354,9 +4362,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public MaxShift MaxShift => (MaxShift)((_opcode >> 37) & 0x3);
}
- struct InstShfLI
+ readonly struct InstShfLI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShfLI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4370,9 +4378,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm6 => (int)((_opcode >> 20) & 0x3F);
}
- struct InstShfRI
+ readonly struct InstShfRI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShfRI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4386,9 +4394,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm6 => (int)((_opcode >> 20) & 0x3F);
}
- struct InstShfl
+ readonly struct InstShfl
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShfl(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4404,9 +4412,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int DestPred => (int)((_opcode >> 48) & 0x7);
}
- struct InstShlR
+ readonly struct InstShlR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShlR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4418,9 +4426,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool M => (_opcode & 0x8000000000) != 0;
}
- struct InstShlI
+ readonly struct InstShlI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShlI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4432,9 +4440,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool M => (_opcode & 0x8000000000) != 0;
}
- struct InstShlC
+ readonly struct InstShlC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShlC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4447,9 +4455,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool M => (_opcode & 0x8000000000) != 0;
}
- struct InstShrR
+ readonly struct InstShrR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShrR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4463,9 +4471,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool M => (_opcode & 0x8000000000) != 0;
}
- struct InstShrI
+ readonly struct InstShrI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShrI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4479,9 +4487,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool M => (_opcode & 0x8000000000) != 0;
}
- struct InstShrC
+ readonly struct InstShrC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstShrC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4496,17 +4504,17 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool M => (_opcode & 0x8000000000) != 0;
}
- struct InstSsy
+ readonly struct InstSsy
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSsy(ulong opcode) => _opcode = opcode;
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
public bool Ca => (_opcode & 0x20) != 0;
}
- struct InstSt
+ readonly struct InstSt
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSt(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4519,9 +4527,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm32 => (int)(_opcode >> 20);
}
- struct InstStg
+ readonly struct InstStg
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstStg(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4533,9 +4541,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
}
- struct InstStl
+ readonly struct InstStl
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstStl(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4546,17 +4554,17 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
}
- struct InstStp
+ readonly struct InstStp
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstStp(ulong opcode) => _opcode = opcode;
public bool Wait => (_opcode & 0x80000000) != 0;
public int Imm8 => (int)((_opcode >> 20) & 0xFF);
}
- struct InstSts
+ readonly struct InstSts
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSts(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4566,9 +4574,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm24 => (int)((_opcode >> 20) & 0xFFFFFF);
}
- struct InstSuatomB
+ readonly struct InstSuatomB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuatomB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4583,9 +4591,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ba => (_opcode & 0x10000000) != 0;
}
- struct InstSuatom
+ readonly struct InstSuatom
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuatom(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4600,9 +4608,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ba => (_opcode & 0x10000000) != 0;
}
- struct InstSuatomB2
+ readonly struct InstSuatomB2
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuatomB2(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4618,9 +4626,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ba => (_opcode & 0x10000000) != 0;
}
- struct InstSuatomCasB
+ readonly struct InstSuatomCasB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuatomCasB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4635,9 +4643,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ba => (_opcode & 0x10000000) != 0;
}
- struct InstSuatomCas
+ readonly struct InstSuatomCas
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuatomCas(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4652,9 +4660,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Ba => (_opcode & 0x10000000) != 0;
}
- struct InstSuldDB
+ readonly struct InstSuldDB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuldDB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4669,9 +4677,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
}
- struct InstSuldD
+ readonly struct InstSuldD
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuldD(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4686,9 +4694,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
}
- struct InstSuldB
+ readonly struct InstSuldB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuldB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4702,9 +4710,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
}
- struct InstSuld
+ readonly struct InstSuld
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuld(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4718,9 +4726,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
}
- struct InstSuredB
+ readonly struct InstSuredB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSuredB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4734,9 +4742,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuatomSize Size => (SuatomSize)((_opcode >> 20) & 0x7);
}
- struct InstSured
+ readonly struct InstSured
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSured(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4750,9 +4758,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuatomSize Size => (SuatomSize)((_opcode >> 20) & 0x7);
}
- struct InstSustDB
+ readonly struct InstSustDB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSustDB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4766,9 +4774,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
}
- struct InstSustD
+ readonly struct InstSustD
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSustD(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4782,9 +4790,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuSize Size => (SuSize)((_opcode >> 20) & 0x7);
}
- struct InstSustB
+ readonly struct InstSustB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSustB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4797,9 +4805,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
}
- struct InstSust
+ readonly struct InstSust
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSust(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4812,18 +4820,18 @@ namespace Ryujinx.Graphics.Shader.Decoders
public SuRgba Rgba => (SuRgba)((_opcode >> 20) & 0xF);
}
- struct InstSync
+ readonly struct InstSync
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstSync(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
public Ccc Ccc => (Ccc)(_opcode & 0x1F);
}
- struct InstTex
+ readonly struct InstTex
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTex(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4842,9 +4850,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Nodep => (_opcode & 0x2000000000000) != 0;
}
- struct InstTexB
+ readonly struct InstTexB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTexB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4862,9 +4870,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Nodep => (_opcode & 0x2000000000000) != 0;
}
- struct InstTexs
+ readonly struct InstTexs
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTexs(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4878,9 +4886,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Dest2 => (int)((_opcode >> 28) & 0xFF);
}
- struct InstTld
+ readonly struct InstTld
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTld(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4898,9 +4906,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
}
- struct InstTldB
+ readonly struct InstTldB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTldB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4917,9 +4925,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
}
- struct InstTlds
+ readonly struct InstTlds
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTlds(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4933,9 +4941,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Dest2 => (int)((_opcode >> 28) & 0xFF);
}
- struct InstTld4
+ readonly struct InstTld4
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTld4(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4954,9 +4962,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Nodep => (_opcode & 0x2000000000000) != 0;
}
- struct InstTld4B
+ readonly struct InstTld4B
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTld4B(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4974,9 +4982,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Nodep => (_opcode & 0x2000000000000) != 0;
}
- struct InstTld4s
+ readonly struct InstTld4s
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTld4s(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -4991,9 +4999,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Dest2 => (int)((_opcode >> 28) & 0xFF);
}
- struct InstTmml
+ readonly struct InstTmml
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTmml(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5007,9 +5015,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
}
- struct InstTmmlB
+ readonly struct InstTmmlB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTmmlB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5022,9 +5030,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
}
- struct InstTxa
+ readonly struct InstTxa
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTxa(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5036,9 +5044,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int WMask => (int)((_opcode >> 31) & 0xF);
}
- struct InstTxd
+ readonly struct InstTxd
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTxd(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5054,9 +5062,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
}
- struct InstTxdB
+ readonly struct InstTxdB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTxdB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5071,9 +5079,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public TexDim Dim => (TexDim)((_opcode >> 28) & 0x7);
}
- struct InstTxq
+ readonly struct InstTxq
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTxq(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5085,9 +5093,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public TexQuery TexQuery => (TexQuery)((_opcode >> 22) & 0x3F);
}
- struct InstTxqB
+ readonly struct InstTxqB
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstTxqB(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5098,9 +5106,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public TexQuery TexQuery => (TexQuery)((_opcode >> 22) & 0x3F);
}
- struct InstVabsdiff
+ readonly struct InstVabsdiff
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVabsdiff(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5117,9 +5125,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVideo => (_opcode & 0x4000000000000) != 0;
}
- struct InstVabsdiff4
+ readonly struct InstVabsdiff4
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVabsdiff4(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5138,9 +5146,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public BSelect4 Bsel4 => (BSelect4)((_opcode >> 28) & 0xF);
}
- struct InstVadd
+ readonly struct InstVadd
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVadd(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5159,9 +5167,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVideo => (_opcode & 0x4000000000000) != 0;
}
- struct InstVmad
+ readonly struct InstVmad
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVmad(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5179,9 +5187,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVideo => (_opcode & 0x4000000000000) != 0;
}
- struct InstVmnmx
+ readonly struct InstVmnmx
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVmnmx(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5200,9 +5208,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVideo => (_opcode & 0x4000000000000) != 0;
}
- struct InstVote
+ readonly struct InstVote
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVote(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int Pred => (int)((_opcode >> 16) & 0x7);
@@ -5213,9 +5221,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int VpDest => (int)((_opcode >> 45) & 0x7);
}
- struct InstVotevtg
+ readonly struct InstVotevtg
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVotevtg(ulong opcode) => _opcode = opcode;
public int Pred => (int)((_opcode >> 16) & 0x7);
public bool PredInv => (_opcode & 0x80000) != 0;
@@ -5223,9 +5231,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public int Imm28 => (int)((_opcode >> 20) & 0xFFFFFFF);
}
- struct InstVset
+ readonly struct InstVset
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVset(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5241,9 +5249,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVideo => (_opcode & 0x4000000000000) != 0;
}
- struct InstVsetp
+ readonly struct InstVsetp
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVsetp(ulong opcode) => _opcode = opcode;
public int SrcA => (int)((_opcode >> 8) & 0xFF);
public int SrcB => (int)((_opcode >> 20) & 0xFF);
@@ -5261,9 +5269,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVideo => (_opcode & 0x4000000000000) != 0;
}
- struct InstVshl
+ readonly struct InstVshl
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVshl(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5281,9 +5289,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVideo => (_opcode & 0x4000000000000) != 0;
}
- struct InstVshr
+ readonly struct InstVshr
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstVshr(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5301,9 +5309,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BVideo => (_opcode & 0x4000000000000) != 0;
}
- struct InstXmadR
+ readonly struct InstXmadR
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstXmadR(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5322,9 +5330,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool HiloB => (_opcode & 0x800000000) != 0;
}
- struct InstXmadI
+ readonly struct InstXmadI
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstXmadI(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5342,9 +5350,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Psl => (_opcode & 0x1000000000) != 0;
}
- struct InstXmadC
+ readonly struct InstXmadC
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstXmadC(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5364,9 +5372,9 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool ASigned => (_opcode & 0x1000000000000) != 0;
}
- struct InstXmadRc
+ readonly struct InstXmadRc
{
- private ulong _opcode;
+ private readonly ulong _opcode;
public InstXmadRc(ulong opcode) => _opcode = opcode;
public int Dest => (int)(_opcode & 0xFF);
public int SrcA => (int)((_opcode >> 8) & 0xFF);
@@ -5383,4 +5391,4 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool BSigned => (_opcode & 0x2000000000000) != 0;
public bool ASigned => (_opcode & 0x1000000000000) != 0;
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/InstName.cs b/src/Ryujinx.Graphics.Shader/Decoders/InstName.cs
index 9c79b7a5..04ad9391 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/InstName.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/InstName.cs
@@ -185,4 +185,4 @@ namespace Ryujinx.Graphics.Shader.Decoders
Vshr,
Xmad,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/InstOp.cs b/src/Ryujinx.Graphics.Shader/Decoders/InstOp.cs
index 39244e64..045257dc 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/InstOp.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/InstOp.cs
@@ -24,4 +24,4 @@ namespace Ryujinx.Graphics.Shader.Decoders
return (ulong)((long)Address + (((int)(RawOpCode >> 20) << 8) >> 8) + 8);
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/InstProps.cs b/src/Ryujinx.Graphics.Shader/Decoders/InstProps.cs
index 3f39e631..14cdcd06 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/InstProps.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/InstProps.cs
@@ -26,6 +26,6 @@ namespace Ryujinx.Graphics.Shader.Decoders
Tex = 1 << 12,
TexB = 1 << 13,
Bra = 1 << 14,
- NoPred = 1 << 15
+ NoPred = 1 << 15,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/InstTable.cs b/src/Ryujinx.Graphics.Shader/Decoders/InstTable.cs
index eaa77930..35367b8d 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/InstTable.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/InstTable.cs
@@ -24,13 +24,14 @@ namespace Ryujinx.Graphics.Shader.Decoders
}
}
- private static TableEntry[] _opCodes;
+ private static readonly TableEntry[] _opCodes;
static InstTable()
{
_opCodes = new TableEntry[1 << EncodingBits];
#region Instructions
+#pragma warning disable IDE0055 // Disable formatting
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);
@@ -325,6 +326,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
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);
+#pragma warning restore IDE0055
#endregion
}
@@ -357,7 +359,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
xMask = ~xMask;
- TableEntry entry = new TableEntry(name, emitter, props, xBits);
+ TableEntry entry = new(name, emitter, props, xBits);
for (int index = 0; index < (1 << xBits); index++)
{
@@ -387,4 +389,4 @@ namespace Ryujinx.Graphics.Shader.Decoders
return new InstOp(address, opCode, InstName.Invalid, null, InstProps.None);
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/Register.cs b/src/Ryujinx.Graphics.Shader/Decoders/Register.cs
index e375096d..2e6d6199 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/Register.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/Register.cs
@@ -8,13 +8,13 @@ namespace Ryujinx.Graphics.Shader.Decoders
public RegisterType Type { get; }
- public bool IsRZ => Type == RegisterType.Gpr && Index == RegisterConsts.RegisterZeroIndex;
+ 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;
+ Type = type;
}
public override int GetHashCode()
@@ -30,7 +30,7 @@ namespace Ryujinx.Graphics.Shader.Decoders
public bool Equals(Register other)
{
return other.Index == Index &&
- other.Type == Type;
+ other.Type == Type;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/RegisterConsts.cs b/src/Ryujinx.Graphics.Shader/Decoders/RegisterConsts.cs
index d381f954..416fba96 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/RegisterConsts.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/RegisterConsts.cs
@@ -2,12 +2,12 @@ namespace Ryujinx.Graphics.Shader.Decoders
{
static class RegisterConsts
{
- public const int GprsCount = 255;
+ 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 RegisterZeroIndex = GprsCount;
public const int PredicateTrueIndex = PredsCount;
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.Graphics.Shader/Decoders/RegisterType.cs b/src/Ryujinx.Graphics.Shader/Decoders/RegisterType.cs
index 648f816a..c870464f 100644
--- a/src/Ryujinx.Graphics.Shader/Decoders/RegisterType.cs
+++ b/src/Ryujinx.Graphics.Shader/Decoders/RegisterType.cs
@@ -6,4 +6,4 @@ namespace Ryujinx.Graphics.Shader.Decoders
Gpr,
Predicate,
}
-} \ No newline at end of file
+}