florian vor 3 Jahren
Ursprung
Commit
cc5ee6b868
1 geänderte Dateien mit 18 neuen und 0 gelöschten Zeilen
  1. 18 0
      compiler/aarch64/aoptcpu.pas

+ 18 - 0
compiler/aarch64/aoptcpu.pas

@@ -787,6 +787,16 @@ Implementation
       hp3: taicpu;
     begin
       Result:=false;
+      {
+        and reg1,reg0,<const=power of 2>
+        cmp reg1,#0
+        <reg1 end of life>
+        b.e/b.ne label
+
+        into
+
+        tb(n)z reg0,<power of 2>,label
+      }
       if MatchOpType(taicpu(p),top_reg,top_reg,top_const) and
         (PopCnt(QWord(taicpu(p).oper[2]^.val))=1) and
         GetNextInstruction(p,hp1) and
@@ -824,6 +834,14 @@ Implementation
      hp1,hp2: tai;
     begin
       Result:=false;
+      {
+         cmp reg0,#0
+         b.e/b.ne label
+
+         into
+
+         cb(n)z reg0,label
+      }
       if MatchOpType(taicpu(p),top_reg,top_const) and
         (taicpu(p).oper[1]^.val=0) and
         GetNextInstruction(p,hp1) and