aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs
diff options
context:
space:
mode:
authorgdk <gab.dark.100@gmail.com>2019-10-31 00:29:22 -0300
committerThog <thog@protonmail.com>2020-01-09 02:13:00 +0100
commit278a4c317c0b87add67cc9ebc904afe1db23a031 (patch)
tree452b59bf4aebf45b9086cf1f59e006c089a2cba7 /Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs
parentd786d8d2b924da7cd116a2eb97d738a9f07b4e43 (diff)
Implement BFI, BRK, FLO, FSWZADD, PBK, SHFL and TXD shader instructions, misc. fixes
Diffstat (limited to 'Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs')
-rw-r--r--Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs22
1 files changed, 21 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs b/Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs
index fb76e06a..e17c9d6c 100644
--- a/Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs
+++ b/Ryujinx.Graphics.Shader/Instructions/InstEmitFlow.cs
@@ -15,6 +15,11 @@ namespace Ryujinx.Graphics.Shader.Instructions
EmitBranch(context, context.CurrBlock.Branch.Address);
}
+ public static void Brk(EmitterContext context)
+ {
+ EmitBrkOrSync(context);
+ }
+
public static void Exit(EmitterContext context)
{
OpCodeExit op = (OpCodeExit)context.CurrOp;
@@ -32,8 +37,23 @@ namespace Ryujinx.Graphics.Shader.Instructions
context.Discard();
}
+ public static void Pbk(EmitterContext context)
+ {
+ EmitPbkOrSsy(context);
+ }
+
public static void Ssy(EmitterContext context)
{
+ EmitPbkOrSsy(context);
+ }
+
+ public static void Sync(EmitterContext context)
+ {
+ EmitBrkOrSync(context);
+ }
+
+ private static void EmitPbkOrSsy(EmitterContext context)
+ {
OpCodeSsy op = (OpCodeSsy)context.CurrOp;
foreach (KeyValuePair<OpCodeSync, Operand> kv in op.Syncs)
@@ -48,7 +68,7 @@ namespace Ryujinx.Graphics.Shader.Instructions
}
}
- public static void Sync(EmitterContext context)
+ private static void EmitBrkOrSync(EmitterContext context)
{
OpCodeSync op = (OpCodeSync)context.CurrOp;