Browse Source

+ AArch64: TCpuAsmOptimizer.OptPass1Mov

git-svn-id: trunk@44795 -
florian 5 years ago
parent
commit
6ccb8b83da
1 changed files with 22 additions and 0 deletions
  1. 22 0
      compiler/aarch64/aoptcpu.pas

+ 22 - 0
compiler/aarch64/aoptcpu.pas

@@ -49,6 +49,7 @@ Interface
         function OptPass1Data(var p: tai): boolean;
         function OptPass1Data(var p: tai): boolean;
         function RemoveSuperfluousFMov(const p: tai; movp: tai; const optimizer: string): boolean;
         function RemoveSuperfluousFMov(const p: tai; movp: tai; const optimizer: string): boolean;
         function OptPass1STP(var p: tai): boolean;
         function OptPass1STP(var p: tai): boolean;
+        function OptPass1Mov(var p: tai): boolean;
       End;
       End;
 
 
 Implementation
 Implementation
@@ -459,6 +460,25 @@ Implementation
     end;
     end;
 
 
 
 
+  function TCpuAsmOptimizer.OptPass1Mov(var p : tai): boolean;
+    var
+      hp1: tai;
+    begin
+     Result:=false;
+     if MatchOperand(taicpu(p).oper[0]^,taicpu(p).oper[1]^) and
+       (taicpu(p).oppostfix=PF_None) then
+       begin
+         RemoveCurrentP(p);
+         DebugMsg('Peephole Mov2None done', p);
+         Result:=true;
+       end
+
+     else if GetNextInstructionUsingReg(p, hp1, taicpu(p).oper[0]^.reg) and
+        RemoveSuperfluousMove(p, hp1, 'MovMov2Mov') then
+       Result:=true;
+    end;
+
+
   function TCpuAsmOptimizer.OptPostCMP(var p : tai): boolean;
   function TCpuAsmOptimizer.OptPostCMP(var p : tai): boolean;
     var
     var
      hp1,hp2: tai;
      hp1,hp2: tai;
@@ -508,6 +528,8 @@ Implementation
               begin
               begin
                 Result:=LookForPostindexedPattern(taicpu(p));
                 Result:=LookForPostindexedPattern(taicpu(p));
               end;
               end;
+            A_MOV:
+              Result:=OptPass1Mov(p);
             A_STP:
             A_STP:
               Result:=OptPass1STP(p);
               Result:=OptPass1STP(p);
             A_LSR,
             A_LSR,