Selaa lähdekoodia

+ Xtensa: tcgcpu.a_op_reg_reg

git-svn-id: trunk@44336 -
florian 5 vuotta sitten
vanhempi
commit
5438bd6668
1 muutettua tiedostoa jossa 16 lisäystä ja 1 poistoa
  1. 16 1
      compiler/xtensa/cgcpu.pas

+ 16 - 1
compiler/xtensa/cgcpu.pas

@@ -401,8 +401,23 @@ implementation
 
     procedure tcgcpu.a_op_reg_reg(list : TAsmList; op : topcg; size : tcgsize;
       src,dst : tregister);
+      var
+        tmpreg : TRegister;
       begin
-        list.Concat(taicpu.op_none(A_NOP));
+        if op = OP_NEG then
+          begin
+            list.concat(taicpu.op_reg_reg(A_NEG,dst,src));
+            maybeadjustresult(list,OP_NEG,size,dst);
+          end
+        else if op = OP_NOT then
+          begin
+            tmpreg:=getintregister(list,size);
+            list.concat(taicpu.op_reg_const(A_MOVI,tmpreg,-1));
+            list.concat(taicpu.op_reg_reg_reg(A_XOR,dst,tmpreg,src));
+            maybeadjustresult(list,OP_NOT,size,dst);
+          end
+        else
+          a_op_reg_reg_reg(list,op,size,src,dst,dst);
       end;