aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2018-08-31 13:14:04 -0300
committergdkchan <gab.dark.100@gmail.com>2018-08-31 13:14:04 -0300
commit42dc925c3da59bf8801b14779482ee5bd9c25dc0 (patch)
tree6134135c08fe81414297b75fbf6e1a7479742d07 /Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
parent7cb6fd8090513b703da9b83dec04866647694f09 (diff)
Implement SSY/SYNC shader instructions (#382)
* Use a program counter to control shaders' flow * Cleanup * Implement SSY/SYNC * Address feedback * Fixup commentary * Fixup Ssy instruction
Diffstat (limited to 'Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs')
-rw-r--r--Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs42
1 files changed, 21 insertions, 21 deletions
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
index c6b71fb0..aef92c5a 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeMove.cs
@@ -25,67 +25,67 @@ namespace Ryujinx.Graphics.Gal.Shader
F64 = 3
}
- public static void F2f_C(ShaderIrBlock Block, long OpCode)
+ public static void F2f_C(ShaderIrBlock Block, long OpCode, long Position)
{
EmitF2f(Block, OpCode, ShaderOper.CR);
}
- public static void F2f_I(ShaderIrBlock Block, long OpCode)
+ public static void F2f_I(ShaderIrBlock Block, long OpCode, long Position)
{
EmitF2f(Block, OpCode, ShaderOper.Immf);
}
- public static void F2f_R(ShaderIrBlock Block, long OpCode)
+ public static void F2f_R(ShaderIrBlock Block, long OpCode, long Position)
{
EmitF2f(Block, OpCode, ShaderOper.RR);
}
- public static void F2i_C(ShaderIrBlock Block, long OpCode)
+ public static void F2i_C(ShaderIrBlock Block, long OpCode, long Position)
{
EmitF2i(Block, OpCode, ShaderOper.CR);
}
- public static void F2i_I(ShaderIrBlock Block, long OpCode)
+ public static void F2i_I(ShaderIrBlock Block, long OpCode, long Position)
{
EmitF2i(Block, OpCode, ShaderOper.Immf);
}
- public static void F2i_R(ShaderIrBlock Block, long OpCode)
+ public static void F2i_R(ShaderIrBlock Block, long OpCode, long Position)
{
EmitF2i(Block, OpCode, ShaderOper.RR);
}
- public static void I2f_C(ShaderIrBlock Block, long OpCode)
+ public static void I2f_C(ShaderIrBlock Block, long OpCode, long Position)
{
EmitI2f(Block, OpCode, ShaderOper.CR);
}
- public static void I2f_I(ShaderIrBlock Block, long OpCode)
+ public static void I2f_I(ShaderIrBlock Block, long OpCode, long Position)
{
EmitI2f(Block, OpCode, ShaderOper.Imm);
}
- public static void I2f_R(ShaderIrBlock Block, long OpCode)
+ public static void I2f_R(ShaderIrBlock Block, long OpCode, long Position)
{
EmitI2f(Block, OpCode, ShaderOper.RR);
}
- public static void I2i_C(ShaderIrBlock Block, long OpCode)
+ public static void I2i_C(ShaderIrBlock Block, long OpCode, long Position)
{
EmitI2i(Block, OpCode, ShaderOper.CR);
}
- public static void I2i_I(ShaderIrBlock Block, long OpCode)
+ public static void I2i_I(ShaderIrBlock Block, long OpCode, long Position)
{
EmitI2i(Block, OpCode, ShaderOper.Imm);
}
- public static void I2i_R(ShaderIrBlock Block, long OpCode)
+ public static void I2i_R(ShaderIrBlock Block, long OpCode, long Position)
{
EmitI2i(Block, OpCode, ShaderOper.RR);
}
- public static void Isberd(ShaderIrBlock Block, long OpCode)
+ public static void Isberd(ShaderIrBlock Block, long OpCode, long Position)
{
//This instruction seems to be used to translate from an address to a vertex index in a GS
//Stub it as such
@@ -95,50 +95,50 @@ namespace Ryujinx.Graphics.Gal.Shader
Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), GetOperGpr8(OpCode)), OpCode));
}
- public static void Mov_C(ShaderIrBlock Block, long OpCode)
+ public static void Mov_C(ShaderIrBlock Block, long OpCode, long Position)
{
ShaderIrOperCbuf Cbuf = GetOperCbuf34(OpCode);
Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Cbuf), OpCode));
}
- public static void Mov_I(ShaderIrBlock Block, long OpCode)
+ public static void Mov_I(ShaderIrBlock Block, long OpCode, long Position)
{
ShaderIrOperImm Imm = GetOperImm19_20(OpCode);
Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Imm), OpCode));
}
- public static void Mov_I32(ShaderIrBlock Block, long OpCode)
+ public static void Mov_I32(ShaderIrBlock Block, long OpCode, long Position)
{
ShaderIrOperImm Imm = GetOperImm32_20(OpCode);
Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Imm), OpCode));
}
- public static void Mov_R(ShaderIrBlock Block, long OpCode)
+ public static void Mov_R(ShaderIrBlock Block, long OpCode, long Position)
{
ShaderIrOperGpr Gpr = GetOperGpr20(OpCode);
Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Gpr), OpCode));
}
- public static void Sel_C(ShaderIrBlock Block, long OpCode)
+ public static void Sel_C(ShaderIrBlock Block, long OpCode, long Position)
{
EmitSel(Block, OpCode, ShaderOper.CR);
}
- public static void Sel_I(ShaderIrBlock Block, long OpCode)
+ public static void Sel_I(ShaderIrBlock Block, long OpCode, long Position)
{
EmitSel(Block, OpCode, ShaderOper.Imm);
}
- public static void Sel_R(ShaderIrBlock Block, long OpCode)
+ public static void Sel_R(ShaderIrBlock Block, long OpCode, long Position)
{
EmitSel(Block, OpCode, ShaderOper.RR);
}
- public static void Mov_S(ShaderIrBlock Block, long OpCode)
+ public static void Mov_S(ShaderIrBlock Block, long OpCode, long Position)
{
Block.AddNode(new ShaderIrCmnt("Stubbed."));