aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics/Shader/Instructions/InstEmitAluHelper.cs
diff options
context:
space:
mode:
authorgdk <gab.dark.100@gmail.com>2019-10-13 03:02:07 -0300
committerThog <thog@protonmail.com>2020-01-09 02:13:00 +0100
commit1876b346fea647e8284a66bb6d62c38801035cff (patch)
tree6eeff094298cda84d1613dc5ec0691e51d7b35f1 /Ryujinx.Graphics/Shader/Instructions/InstEmitAluHelper.cs
parentf617fb542a0e3d36012d77a4b5acbde7b08902f2 (diff)
Initial work
Diffstat (limited to 'Ryujinx.Graphics/Shader/Instructions/InstEmitAluHelper.cs')
-rw-r--r--Ryujinx.Graphics/Shader/Instructions/InstEmitAluHelper.cs88
1 files changed, 0 insertions, 88 deletions
diff --git a/Ryujinx.Graphics/Shader/Instructions/InstEmitAluHelper.cs b/Ryujinx.Graphics/Shader/Instructions/InstEmitAluHelper.cs
deleted file mode 100644
index 5c4f5398..00000000
--- a/Ryujinx.Graphics/Shader/Instructions/InstEmitAluHelper.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-using Ryujinx.Graphics.Shader.Decoders;
-using Ryujinx.Graphics.Shader.IntermediateRepresentation;
-using Ryujinx.Graphics.Shader.Translation;
-using System;
-
-using static Ryujinx.Graphics.Shader.Instructions.InstEmitHelper;
-using static Ryujinx.Graphics.Shader.IntermediateRepresentation.OperandHelper;
-
-namespace Ryujinx.Graphics.Shader.Instructions
-{
- static class InstEmitAluHelper
- {
- public static int GetIntMin(IntegerType type)
- {
- switch (type)
- {
- case IntegerType.U8: return byte.MinValue;
- case IntegerType.S8: return sbyte.MinValue;
- case IntegerType.U16: return ushort.MinValue;
- case IntegerType.S16: return short.MinValue;
- case IntegerType.U32: return (int)uint.MinValue;
- case IntegerType.S32: return int.MinValue;
- }
-
- throw new ArgumentException($"The type \"{type}\" is not a supported int type.");
- }
-
- public static int GetIntMax(IntegerType type)
- {
- switch (type)
- {
- case IntegerType.U8: return byte.MaxValue;
- case IntegerType.S8: return sbyte.MaxValue;
- case IntegerType.U16: return ushort.MaxValue;
- case IntegerType.S16: return short.MaxValue;
- case IntegerType.U32: return unchecked((int)uint.MaxValue);
- case IntegerType.S32: return int.MaxValue;
- }
-
- throw new ArgumentException($"The type \"{type}\" is not a supported int type.");
- }
-
- public static Operand GetPredLogicalOp(
- EmitterContext context,
- LogicalOperation logicalOp,
- Operand input,
- Operand pred)
- {
- switch (logicalOp)
- {
- case LogicalOperation.And: return context.BitwiseAnd (input, pred);
- case LogicalOperation.Or: return context.BitwiseOr (input, pred);
- case LogicalOperation.ExclusiveOr: return context.BitwiseExclusiveOr(input, pred);
- }
-
- return input;
- }
-
- public static void SetZnFlags(EmitterContext context, Operand dest, bool setCC, bool extended = false)
- {
- if (!setCC)
- {
- return;
- }
-
- if (extended)
- {
- // When the operation is extended, it means we are doing
- // the operation on a long word with any number of bits,
- // so we need to AND the zero flag from result with the
- // previous result when extended is specified, to ensure
- // we have ZF set only if all words are zero, and not just
- // the last one.
- Operand oldZF = GetZF(context);
-
- Operand res = context.BitwiseAnd(context.ICompareEqual(dest, Const(0)), oldZF);
-
- context.Copy(GetZF(context), res);
- }
- else
- {
- context.Copy(GetZF(context), context.ICompareEqual(dest, Const(0)));
- }
-
- context.Copy(GetNF(context), context.ICompareLess(dest, Const(0)));
- }
- }
-} \ No newline at end of file