From dc97457bf0121b9383054ca14d3c525b56b92634 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Tue, 3 Mar 2020 11:02:08 -0300 Subject: Initial support for double precision shader instructions. (#963) * Implement DADD, DFMA and DMUL shader instructions * Rename FP to FP32 * Correct double immediate * Classic mistake --- Ryujinx.Graphics.Shader/Decoders/DecoderHelper.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'Ryujinx.Graphics.Shader/Decoders/DecoderHelper.cs') diff --git a/Ryujinx.Graphics.Shader/Decoders/DecoderHelper.cs b/Ryujinx.Graphics.Shader/Decoders/DecoderHelper.cs index 77cd1bf7..3585c35f 100644 --- a/Ryujinx.Graphics.Shader/Decoders/DecoderHelper.cs +++ b/Ryujinx.Graphics.Shader/Decoders/DecoderHelper.cs @@ -54,5 +54,21 @@ namespace Ryujinx.Graphics.Shader.Decoders return BitConverter.Int32BitsToSingle(imm); } + + public static float DecodeD20Immediate(long opCode) + { + long imm = opCode.Extract(20, 19); + + bool negate = opCode.Extract(56); + + imm <<= 44; + + if (negate) + { + imm |= 1L << 63; + } + + return (float)BitConverter.Int64BitsToDouble(imm); + } } } \ No newline at end of file -- cgit v1.2.3