Browse Source

* fixed shr/shl 32

peter 21 năm trước cách đây
mục cha
commit
f3f33a5fea
1 tập tin đã thay đổi với 10 bổ sung8 xóa
  1. 10 8
      compiler/sparc/ncpumat.pas

+ 10 - 8
compiler/sparc/ncpumat.pas

@@ -210,19 +210,18 @@ implementation
               begin
                 if nodetype = shln then
                   begin
+                    cg.a_load_const_reg(exprasmlist,OS_32,0,hregisterhigh);
                     if (shiftval and 31) <> 0 then
-                      cg.a_op_const_reg_reg(exprasmlist,OP_SHL,OS_32,shiftval and 31,hregisterlow,hregisterhigh);
-                    cg.a_load_const_reg(exprasmlist,OS_32,0,hregisterlow);
+                      cg.a_op_const_reg_reg(exprasmlist,OP_SHL,OS_32,shiftval and 31,hregisterlow,hregisterlow);
                   end
                 else
                   begin
+                    cg.a_load_const_reg(exprasmlist,OS_32,0,hregisterlow);
                     if (shiftval and 31) <> 0 then
-                      cg.a_op_const_reg_reg(exprasmlist,OP_SHR,OS_32,shiftval and 31,hregisterhigh,hregisterlow);
-                    cg.a_load_const_reg(exprasmlist,OS_32,0,hregisterhigh);
+                      cg.a_op_const_reg_reg(exprasmlist,OP_SHR,OS_32,shiftval and 31,hregisterhigh,hregisterhigh);
                   end;
-                { registers are already swapped }
-                location.registerlow:=hregisterlow;
-                location.registerhigh:=hregisterhigh;
+                location.registerlow:=hregisterhigh;
+                location.registerhigh:=hregisterlow;
               end
             else
               begin
@@ -333,7 +332,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.19  2004-08-01 08:46:31  florian
+  Revision 1.20  2004-08-16 21:00:30  peter
+    * fixed shr/shl 32
+
+  Revision 1.19  2004/08/01 08:46:31  florian
     * qword/int64 shifting fixed
 
   Revision 1.18  2004/06/20 08:55:32  florian