Browse Source

+ support for OP_NOT and OP_NEG in a_op64_reg_reg() (required since
r19912)

git-svn-id: trunk@19921 -

Jonas Maebe 13 years ago
parent
commit
f5568b86e6
1 changed files with 14 additions and 1 deletions
  1. 14 1
      compiler/powerpc/cgcpu.pas

+ 14 - 1
compiler/powerpc/cgcpu.pas

@@ -1695,7 +1695,20 @@ const
 
     procedure tcg64fppc.a_op64_reg_reg(list : TAsmList;op:TOpCG;size : tcgsize;regsrc,regdst : tregister64);
       begin
-        a_op64_reg_reg_reg(list,op,size,regsrc,regdst,regdst);
+        case op of
+          OP_NOT:
+            begin
+              cg.a_op_reg_reg(list,OP_NOT,OS_32,regsrc.reglo,regdst.reglo);
+              cg.a_op_reg_reg(list,OP_NOT,OS_32,regsrc.reghi,regdst.reghi);
+            end;
+          OP_NEG:
+            begin
+              list.concat(taicpu.op_reg_reg_const(a_subfic,regdst.reglo,regsrc.reglo,0));
+              list.concat(taicpu.op_reg_reg(a_subfze,regdst.reghi,regsrc.reghi));
+            end;
+          else
+            a_op64_reg_reg_reg(list,op,size,regsrc,regdst,regdst);
+        end;
       end;