Просмотр исходного кода

Eliminate zero-extension moves in more cases on 32-bit games (#4140)

* Eliminate zero-extension moves in more cases on 32-bit games

* PPTC version bump

* Revert X86Optimizer changes
gdkchan 3 лет назад
Родитель
Сommit
ee0f9b03a4
2 измененных файлов с 7 добавлено и 1 удалено
  1. 6 0
      ARMeilleure/CodeGen/X86/CodeGenerator.cs
  2. 1 1
      ARMeilleure/Translation/PTC/Ptc.cs

+ 6 - 0
ARMeilleure/CodeGen/X86/CodeGenerator.cs

@@ -1587,6 +1587,12 @@ namespace ARMeilleure.CodeGen.X86
 
             Debug.Assert(dest.Type.IsInteger() && source.Type.IsInteger());
 
+            // We can eliminate the move if source is already 32-bit and the registers are the same.
+            if (dest.Value == source.Value && source.Type == OperandType.I32)
+            {
+                return;
+            }
+
             context.Assembler.Mov(dest, source, OperandType.I32);
         }
 

+ 1 - 1
ARMeilleure/Translation/PTC/Ptc.cs

@@ -27,7 +27,7 @@ namespace ARMeilleure.Translation.PTC
         private const string OuterHeaderMagicString = "PTCohd\0\0";
         private const string InnerHeaderMagicString = "PTCihd\0\0";
 
-        private const uint InternalVersion = 3713; //! To be incremented manually for each change to the ARMeilleure project.
+        private const uint InternalVersion = 4140; //! To be incremented manually for each change to the ARMeilleure project.
 
         private const string ActualDir = "0";
         private const string BackupDir = "1";