diff options
Diffstat (limited to 'Ryujinx.Graphics.Shader/Decoders')
| -rw-r--r-- | Ryujinx.Graphics.Shader/Decoders/BitfieldExtensions.cs | 4 | ||||
| -rw-r--r-- | Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/Ryujinx.Graphics.Shader/Decoders/BitfieldExtensions.cs b/Ryujinx.Graphics.Shader/Decoders/BitfieldExtensions.cs index 3bb9bc1f..d902fc86 100644 --- a/Ryujinx.Graphics.Shader/Decoders/BitfieldExtensions.cs +++ b/Ryujinx.Graphics.Shader/Decoders/BitfieldExtensions.cs @@ -4,12 +4,12 @@ namespace Ryujinx.Graphics.Shader.Decoders { public static bool Extract(this int value, int lsb) { - return ((int)(value >> lsb) & 1) != 0; + return ((value >> lsb) & 1) != 0; } public static int Extract(this int value, int lsb, int length) { - return (int)(value >> lsb) & (int)(uint.MaxValue >> (32 - length)); + return (value >> lsb) & (int)(uint.MaxValue >> (32 - length)); } public static bool Extract(this long value, int lsb) diff --git a/Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs b/Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs index be93f137..eef36a95 100644 --- a/Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs +++ b/Ryujinx.Graphics.Shader/Decoders/OpCodeTable.cs @@ -176,6 +176,9 @@ namespace Ryujinx.Graphics.Shader.Decoders Set("1110111110010x", InstEmit.Ldc, typeof(OpCodeLdc)); Set("1110111011010x", InstEmit.Ldg, typeof(OpCodeMemory)); Set("1110111101001x", InstEmit.Lds, typeof(OpCodeMemory)); + Set("010010111101xx", InstEmit.Lea, typeof(OpCodeAluCbuf)); + Set("0011011x11010x", InstEmit.Lea, typeof(OpCodeAluImm)); + Set("0101101111010x", InstEmit.Lea, typeof(OpCodeAluReg)); Set("0100110001000x", InstEmit.Lop, typeof(OpCodeLopCbuf)); Set("0011100001000x", InstEmit.Lop, typeof(OpCodeLopImm)); Set("000001xxxxxxxx", InstEmit.Lop, typeof(OpCodeLopImm32)); |
