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

Use normal memory store path for DC ZVA (#2693)

Seems like this is used as an optimized way to clear memory in homebrew applications. Unfortunately, calling the software fallback method every 8 bytes was not very optimal.

The existing EmitStore is used by passing in ZR as the register to get a 0 write.
riperiperi 4 лет назад
Родитель
Сommit
1ae690ba2f
2 измененных файлов с 2 добавлено и 2 удалено
  1. 1 1
      ARMeilleure/Instructions/InstEmitSystem.cs
  2. 1 1
      ARMeilleure/Translation/PTC/Ptc.cs

+ 1 - 1
ARMeilleure/Instructions/InstEmitSystem.cs

@@ -91,7 +91,7 @@ namespace ARMeilleure.Instructions
                     {
                         Operand address = context.Add(t, Const(offset));
 
-                        context.Call(typeof(NativeInterface).GetMethod(nameof(NativeInterface.WriteUInt64)), address, Const(0L));
+                        InstEmitMemoryHelper.EmitStore(context, address, RegisterConsts.ZeroIndex, 3);
                     }
 
                     break;

+ 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 = 2571; //! To be incremented manually for each change to the ARMeilleure project.
+        private const uint InternalVersion = 2693; //! To be incremented manually for each change to the ARMeilleure project.
 
         private const string ActualDir = "0";
         private const string BackupDir = "1";