diff options
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/Decoders')
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 +} |