diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2021-10-17 17:48:36 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-17 17:48:36 -0300 |
| commit | 7603dbe3c8b45c8563f320f17ce784151cb1f0a8 (patch) | |
| tree | 08bfd5fa0b4d77e0279540cd8ba01b6360917e53 /Ryujinx.Graphics.Shader/Instructions/InstEmitAluHelper.cs | |
| parent | 25fd4ef10e610ee470b76d6f58b4a3b9cd053844 (diff) | |
Add missing U8/S8 types from shader I2I instruction (#2740)
* Add missing U8/S8 types from shader I2I instruction
* Better names
* Fix dstIsSignedInt
Diffstat (limited to 'Ryujinx.Graphics.Shader/Instructions/InstEmitAluHelper.cs')
| -rw-r--r-- | Ryujinx.Graphics.Shader/Instructions/InstEmitAluHelper.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.Shader/Instructions/InstEmitAluHelper.cs b/Ryujinx.Graphics.Shader/Instructions/InstEmitAluHelper.cs index 3dda5316..3fbd0aeb 100644 --- a/Ryujinx.Graphics.Shader/Instructions/InstEmitAluHelper.cs +++ b/Ryujinx.Graphics.Shader/Instructions/InstEmitAluHelper.cs @@ -34,6 +34,34 @@ namespace Ryujinx.Graphics.Shader.Instructions }; } + public static long GetIntMin(ISrcDstFmt type) + { + return type switch + { + ISrcDstFmt.U8 => byte.MinValue, + ISrcDstFmt.S8 => sbyte.MinValue, + ISrcDstFmt.U16 => ushort.MinValue, + ISrcDstFmt.S16 => short.MinValue, + ISrcDstFmt.U32 => uint.MinValue, + ISrcDstFmt.S32 => int.MinValue, + _ => throw new ArgumentException($"The type \"{type}\" is not a supported integer type.") + }; + } + + public static long GetIntMax(ISrcDstFmt type) + { + return type switch + { + ISrcDstFmt.U8 => byte.MaxValue, + ISrcDstFmt.S8 => sbyte.MaxValue, + ISrcDstFmt.U16 => ushort.MaxValue, + ISrcDstFmt.S16 => short.MaxValue, + ISrcDstFmt.U32 => uint.MaxValue, + ISrcDstFmt.S32 => int.MaxValue, + _ => throw new ArgumentException($"The type \"{type}\" is not a supported integer type.") + }; + } + public static Operand GetPredLogicalOp(EmitterContext context, BoolOp logicOp, Operand input, Operand pred) { return logicOp switch |
