aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs')
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs38
1 files changed, 18 insertions, 20 deletions
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
index b9cf02f1..dfcea905 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
@@ -99,24 +99,24 @@ namespace Ryujinx.Graphics.Gal.Shader
Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Imm), OpCode));
}
- public static void Mov_R(ShaderIrBlock Block, long OpCode)
+ public static void Mov_I32(ShaderIrBlock Block, long OpCode)
{
- ShaderIrOperGpr Gpr = GetOperGpr20(OpCode);
+ ShaderIrOperImm Imm = GetOperImm32_20(OpCode);
- Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Gpr), OpCode));
+ Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Imm), OpCode));
}
- public static void Mov32i(ShaderIrBlock Block, long OpCode)
+ public static void Mov_R(ShaderIrBlock Block, long OpCode)
{
- ShaderIrOperImm Imm = GetOperImm32_20(OpCode);
+ ShaderIrOperGpr Gpr = GetOperGpr20(OpCode);
- Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Imm), OpCode));
+ Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Gpr), OpCode));
}
private static void EmitF2f(ShaderIrBlock Block, long OpCode, ShaderOper Oper)
{
- bool Na = ((OpCode >> 45) & 1) != 0;
- bool Aa = ((OpCode >> 49) & 1) != 0;
+ bool NegA = ((OpCode >> 45) & 1) != 0;
+ bool AbsA = ((OpCode >> 49) & 1) != 0;
ShaderIrNode OperA;
@@ -129,7 +129,7 @@ namespace Ryujinx.Graphics.Gal.Shader
default: throw new ArgumentException(nameof(Oper));
}
- OperA = GetAluAbsNeg(OperA, Aa, Na);
+ OperA = GetAluFabsFneg(OperA, AbsA, NegA);
ShaderIrInst RoundInst = GetRoundInst(OpCode);
@@ -153,8 +153,8 @@ namespace Ryujinx.Graphics.Gal.Shader
throw new NotImplementedException();
}
- bool Na = ((OpCode >> 45) & 1) != 0;
- bool Aa = ((OpCode >> 49) & 1) != 0;
+ bool NegA = ((OpCode >> 45) & 1) != 0;
+ bool AbsA = ((OpCode >> 49) & 1) != 0;
ShaderIrNode OperA;
@@ -167,7 +167,7 @@ namespace Ryujinx.Graphics.Gal.Shader
default: throw new ArgumentException(nameof(Oper));
}
- OperA = GetAluAbsNeg(OperA, Aa, Na);
+ OperA = GetAluFabsFneg(OperA, AbsA, NegA);
ShaderIrInst RoundInst = GetRoundInst(OpCode);
@@ -224,8 +224,8 @@ namespace Ryujinx.Graphics.Gal.Shader
int Sel = (int)(OpCode >> 41) & 3;
- bool Na = ((OpCode >> 45) & 1) != 0;
- bool Aa = ((OpCode >> 49) & 1) != 0;
+ bool NegA = ((OpCode >> 45) & 1) != 0;
+ bool AbsA = ((OpCode >> 49) & 1) != 0;
ShaderIrNode OperA;
@@ -238,7 +238,7 @@ namespace Ryujinx.Graphics.Gal.Shader
default: throw new ArgumentException(nameof(Oper));
}
- OperA = GetAluAbsNeg(OperA, Aa, Na);
+ OperA = GetAluIabsIneg(OperA, AbsA, NegA);
bool Signed = Type >= IntType.S8;
@@ -253,9 +253,7 @@ namespace Ryujinx.Graphics.Gal.Shader
if (Size < 32)
{
- uint Mask = uint.MaxValue >> (32 - Size);
-
- OperA = new ShaderIrOp(ShaderIrInst.And, OperA, new ShaderIrOperImm((int)Mask));
+ OperA = ExtendTo32(OperA, Signed, Size);
}
ShaderIrInst Inst = Signed
@@ -296,7 +294,7 @@ namespace Ryujinx.Graphics.Gal.Shader
default: throw new ArgumentException(nameof(Oper));
}
- OperA = GetAluAbsNeg(OperA, AbsA, NegA);
+ OperA = GetAluIabsIneg(OperA, AbsA, NegA);
bool Signed = Type >= IntType.S8;
@@ -335,7 +333,7 @@ namespace Ryujinx.Graphics.Gal.Shader
}
else
{
- OperA = new ShaderIrOp(ShaderIrInst.And, OperA, new ShaderIrOperImm((int)Mask));
+ OperA = ExtendTo32(OperA, Signed, Size);
}
}