From 747876dc6711b8cdf5751c1089b1f1311c46628d Mon Sep 17 00:00:00 2001
From: merry <git@mary.rs>
Date: Fri, 18 Feb 2022 00:33:43 +0000
Subject: [PATCH] Decoders: Add IOpCode32HasSetFlags (#3136)

---
 ARMeilleure/Decoders/IOpCode32Alu.cs          | 4 +---
 ARMeilleure/Decoders/IOpCode32HasSetFlags.cs  | 7 +++++++
 ARMeilleure/Decoders/OpCode32AluUmull.cs      | 2 +-
 ARMeilleure/Instructions/InstEmitAluHelper.cs | 2 +-
 4 files changed, 10 insertions(+), 5 deletions(-)
 create mode 100644 ARMeilleure/Decoders/IOpCode32HasSetFlags.cs

diff --git a/ARMeilleure/Decoders/IOpCode32Alu.cs b/ARMeilleure/Decoders/IOpCode32Alu.cs
index 9876f107bb..69fee164c0 100644
--- a/ARMeilleure/Decoders/IOpCode32Alu.cs
+++ b/ARMeilleure/Decoders/IOpCode32Alu.cs
@@ -1,10 +1,8 @@
 namespace ARMeilleure.Decoders
 {
-    interface IOpCode32Alu : IOpCode32
+    interface IOpCode32Alu : IOpCode32, IOpCode32HasSetFlags
     {
         int Rd { get; }
         int Rn { get; }
-
-        bool? SetFlags { get; }
     }
 }
\ No newline at end of file
diff --git a/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs b/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs
new file mode 100644
index 0000000000..71ca6d19c8
--- /dev/null
+++ b/ARMeilleure/Decoders/IOpCode32HasSetFlags.cs
@@ -0,0 +1,7 @@
+namespace ARMeilleure.Decoders
+{
+    interface IOpCode32HasSetFlags
+    {
+        bool? SetFlags { get; }
+    }
+}
\ No newline at end of file
diff --git a/ARMeilleure/Decoders/OpCode32AluUmull.cs b/ARMeilleure/Decoders/OpCode32AluUmull.cs
index bbdaaeae39..1b31239be0 100644
--- a/ARMeilleure/Decoders/OpCode32AluUmull.cs
+++ b/ARMeilleure/Decoders/OpCode32AluUmull.cs
@@ -1,6 +1,6 @@
 namespace ARMeilleure.Decoders
 {
-    class OpCode32AluUmull : OpCode32
+    class OpCode32AluUmull : OpCode32, IOpCode32HasSetFlags
     {
         public int RdLo { get; }
         public int RdHi { get; }
diff --git a/ARMeilleure/Instructions/InstEmitAluHelper.cs b/ARMeilleure/Instructions/InstEmitAluHelper.cs
index fe55576774..8bf53ed41e 100644
--- a/ARMeilleure/Instructions/InstEmitAluHelper.cs
+++ b/ARMeilleure/Instructions/InstEmitAluHelper.cs
@@ -14,7 +14,7 @@ namespace ARMeilleure.Instructions
     {
         public static bool ShouldSetFlags(ArmEmitterContext context)
         {
-            IOpCode32Alu op = (IOpCode32Alu)context.CurrOp;
+            IOpCode32HasSetFlags op = (IOpCode32HasSetFlags)context.CurrOp;
 
             if (op.SetFlags == null)
             {