Bläddra i källkod

+ Aarch64: Ldr<Postfix>Mov2Ldr<Postfix> optimization

florian 3 år sedan
förälder
incheckning
c1d8e32eae
1 ändrade filer med 7 tillägg och 1 borttagningar
  1. 7 1
      compiler/aarch64/aoptcpu.pas

+ 7 - 1
compiler/aarch64/aoptcpu.pas

@@ -297,11 +297,17 @@ Implementation
 
 
   function TCpuAsmOptimizer.OptPass1LDR(var p: tai): Boolean;
+    var
+      hp1: tai;
     begin
       Result := False;
       if inherited OptPass1LDR(p) or
         LookForPostindexedPattern(p) then
-        Exit(True);
+        Exit(True)
+      else if (taicpu(p).oppostfix in [PF_B,PF_SB,PF_H,PF_SH,PF_None]) and
+        GetNextInstructionUsingReg(p, hp1, taicpu(p).oper[0]^.reg) and
+        RemoveSuperfluousMove(p, hp1, 'Ldr<Postfix>Mov2Ldr<Postfix>') then
+        Exit(true);
     end;