From e4ea5a20270922cc927fde7db5be9b7db0248f4d Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Sat, 14 Jul 2018 15:52:13 -0300 Subject: [PATCH] Address feedback --- .../Gal/Shader/ShaderDecodeAlu.cs | 25 ++++++++++--------- .../Gal/Shader/ShaderOpCodeTable.cs | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs index a1f0a66ebf..5589add85c 100644 --- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs +++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeAlu.cs @@ -144,7 +144,17 @@ namespace Ryujinx.Graphics.Gal.Shader EmitFsetp(Block, OpCode, ShaderOper.RR); } - public static void Iadd_I32_1c0(ShaderIrBlock Block, long OpCode) + public static void Iadd_C(ShaderIrBlock Block, long OpCode) + { + EmitIadd(Block, OpCode, ShaderOper.CR); + } + + public static void Iadd_I(ShaderIrBlock Block, long OpCode) + { + EmitIadd(Block, OpCode, ShaderOper.Imm); + } + + public static void Iadd_I32(ShaderIrBlock Block, long OpCode) { ShaderIrNode OperA = GetOperGpr0 (OpCode); ShaderIrNode OperB = GetOperImm32_20(OpCode); @@ -158,16 +168,6 @@ namespace Ryujinx.Graphics.Gal.Shader Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), Op), OpCode)); } - public static void Iadd_C(ShaderIrBlock Block, long OpCode) - { - EmitIadd(Block, OpCode, ShaderOper.CR); - } - - public static void Iadd_I(ShaderIrBlock Block, long OpCode) - { - EmitIadd(Block, OpCode, ShaderOper.Imm); - } - public static void Iadd_R(ShaderIrBlock Block, long OpCode) { EmitIadd(Block, OpCode, ShaderOper.RR); @@ -687,7 +687,8 @@ namespace Ryujinx.Graphics.Gal.Shader } } - //TODO: What would "add_with_carry" mean in this context? Just add Sum to Src3 for now + //Note: Here there should be a "+ 1" when carry flag is set + //but since carry is mostly ignored by other instructions, it's excluded for now Block.AddNode(GetPredNode(new ShaderIrAsg(GetOperGpr0(OpCode), new ShaderIrOp(ShaderIrInst.Add, Sum, Src3)), OpCode)); } diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderOpCodeTable.cs b/Ryujinx.Graphics/Gal/Shader/ShaderOpCodeTable.cs index 1a50210f28..1ac1178512 100644 --- a/Ryujinx.Graphics/Gal/Shader/ShaderOpCodeTable.cs +++ b/Ryujinx.Graphics/Gal/Shader/ShaderOpCodeTable.cs @@ -64,9 +64,9 @@ namespace Ryujinx.Graphics.Gal.Shader Set("0100110011100x", ShaderDecode.I2i_C); Set("0011100x11100x", ShaderDecode.I2i_I); Set("0101110011100x", ShaderDecode.I2i_R); - Set("0001110xxxxxxx", ShaderDecode.Iadd_I32_1c0); Set("0100110000010x", ShaderDecode.Iadd_C); Set("0011100000010x", ShaderDecode.Iadd_I); + Set("0001110x0xxxxx", ShaderDecode.Iadd_I32); Set("0101110000010x", ShaderDecode.Iadd_R); Set("010011001100xx", ShaderDecode.Iadd3_C); Set("001110001100xx", ShaderDecode.Iadd3_I);