Преглед на файлове

* compilation of the powerpc compiler fixed

florian преди 22 години
родител
ревизия
6a01a7b4a6
променени са 9 файла, в които са добавени 177 реда и са изтрити 96 реда
  1. 14 11
      compiler/ncgadd.pas
  2. 5 2
      compiler/ncgcal.pas
  3. 5 2
      compiler/node.pas
  4. 61 4
      compiler/powerpc/cgcpu.pas
  5. 36 33
      compiler/powerpc/nppcadd.pas
  6. 21 18
      compiler/powerpc/nppccnv.pas
  7. 5 2
      compiler/powerpc/nppcinl.pas
  8. 24 21
      compiler/powerpc/nppcmat.pas
  9. 6 3
      compiler/powerpc/nppcset.pas

+ 14 - 11
compiler/ncgadd.pas

@@ -136,7 +136,7 @@ interface
           end;
         if pushedfpu then
           begin
-            tmpreg := rg.getregisterfpu(exprasmlist,left.location.size);
+            tmpreg := cg.getfpuregister(exprasmlist,left.location.size);
             cg.a_loadfpu_loc_reg(exprasmlist,left.location,tmpreg);
             location_reset(left.location,LOC_FPUREGISTER,left.location.size);
             left.location.register := tmpreg;
@@ -181,12 +181,12 @@ interface
 {$ifndef cpu64bit}
             if location.size in [OS_64,OS_S64] then
               begin
-                location.registerlow := rg.getregisterint(exprasmlist,OS_INT);
-                location.registerhigh := rg.getregisterint(exprasmlist,OS_INT);
+                location.registerlow := cg.getintregister(exprasmlist,OS_INT);
+                location.registerhigh := cg.getintregister(exprasmlist,OS_INT);
               end
             else
 {$endif}
-              location.register := rg.getregisterint(exprasmlist,location.size);
+              location.register := cg.getintregister(exprasmlist,location.size);
           end;
       end;
 
@@ -294,7 +294,7 @@ interface
                       left.location.register,location.register)
                   else
                     begin
-                      tmpreg := rg.getregisterint(exprasmlist,location.size);
+                      tmpreg := cg.getintregister(exprasmlist,location.size);
                       cg.a_load_const_reg(exprasmlist,location.size,1,tmpreg);
                       cg.a_op_reg_reg(exprasmlist,OP_SHL,location.size,
                         right.location.register,tmpreg);
@@ -304,7 +304,7 @@ interface
                       else
                         cg.a_op_const_reg_reg(exprasmlist,OP_OR,location.size,
                             aword(left.location.value),tmpreg,location.register);
-                      rg.ungetregisterint(exprasmlist,tmpreg);
+                      cg.ungetregister(exprasmlist,tmpreg);
                     end;
                   opdone := true;
                 end
@@ -334,13 +334,13 @@ interface
                 begin
                   if left.location.loc = LOC_CONSTANT then
                     begin
-                      tmpreg := rg.getregisterint(exprasmlist,location.size);
+                      tmpreg := cg.getintregister(exprasmlist,location.size);
                       cg.a_load_const_reg(exprasmlist,location.size,
                         aword(left.location.value),tmpreg);
                       cg.a_op_reg_reg(exprasmlist,OP_NOT,location.size,right.location.register,right.location.register);
                       cg.a_op_reg_reg(exprasmlist,OP_AND,location.size,right.location.register,tmpreg);
                       cg.a_load_reg_reg(exprasmlist,OS_INT,location.size,tmpreg,location.register);
-                      rg.ungetregisterint(exprasmlist,tmpreg);
+                      cg.ungetregister(exprasmlist,tmpreg);
                     end
                   else
                     begin
@@ -660,12 +660,12 @@ interface
             end
           else
             begin
-              tmpreg := rg.getregisterint(exprasmlist,location.size);
+              tmpreg := cg.getintregister(exprasmlist,location.size);
               cg.a_load_const_reg(exprasmlist,location.size,
                 aword(left.location.value),tmpreg);
               cg.a_op_reg_reg_reg(exprasmlist,OP_SUB,location.size,
                 right.location.register,tmpreg,location.register);
-              rg.ungetregisterint(exprasmlist,tmpreg);
+              cg.ungetregister(exprasmlist,tmpreg);
             end;
         end;
 
@@ -735,7 +735,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.21  2003-10-10 17:48:13  peter
+  Revision 1.22  2003-10-17 01:22:08  florian
+    * compilation of the powerpc compiler fixed
+
+  Revision 1.21  2003/10/10 17:48:13  peter
     * old trgobj moved to x86/rgcpu and renamed to trgx86fpu
     * tregisteralloctor renamed to trgobj
     * removed rgobj from a lot of units

+ 5 - 2
compiler/ncgcal.pas

@@ -466,7 +466,7 @@ implementation
 {$ifdef x86}
                 tcgx86(cg).inc_fpu_stack;
 {$else x86}
-                hregister := cg.getregister(exprasmlist,location.size);
+                hregister := cg.getfpuregister(exprasmlist,location.size);
                 cg.a_loadfpu_reg_reg(exprasmlist,location.size,location.register,hregister);
                 location.register := hregister;
 {$endif x86}
@@ -1104,7 +1104,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.130  2003-10-11 16:06:42  florian
+  Revision 1.131  2003-10-17 01:22:08  florian
+    * compilation of the powerpc compiler fixed
+
+  Revision 1.130  2003/10/11 16:06:42  florian
     * fixed some MMX<->SSE
     * started to fix ppc, needs an overhaul
     + stabs info improve for spilling, not sure if it works correctly/completly

+ 5 - 2
compiler/node.pas

@@ -614,7 +614,7 @@ implementation
         else
           write(t,', resulttype = <nil>');
         writeln(t,', pos = (',fileinfo.line,',',fileinfo.column,')',
-                  // ', loc = ',tcgloc2str[location.loc],
+                  ', loc = ',tcgloc2str[location.loc],
                   ', expectloc = ',tcgloc2str[expectloc],
                   ', intregs = ',registers32,
                   ', fpuregs = ',registersfpu);
@@ -976,7 +976,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.69  2003-10-08 19:19:45  peter
+  Revision 1.70  2003-10-17 01:22:08  florian
+    * compilation of the powerpc compiler fixed
+
+  Revision 1.69  2003/10/08 19:19:45  peter
     * set_varstate cleanup
 
   Revision 1.68  2003/10/01 20:34:49  peter

+ 61 - 4
compiler/powerpc/cgcpu.pas

@@ -42,16 +42,16 @@ unit cgcpu;
         procedure done_register_allocators;override;
 
         function  getintregister(list:Taasmoutput;size:Tcgsize):Tregister;override;
-        function  getaddressregister(list:Taasmoutput):Tregister;override;
+        function  getaddressregister(list:Taasmoutput):Tregister;
         function  getfpuregister(list:Taasmoutput;size:Tcgsize):Tregister;override;
         function  getmmregister(list:Taasmoutput;size:Tcgsize):Tregister;override;
         procedure getexplicitregister(list:Taasmoutput;r:Tregister);override;
-        function  getabtintregister(list:Taasmoutput;size:Tcgsize):Tregister;override;
         procedure ungetregister(list:Taasmoutput;r:Tregister);override;
-        procedure ungetreference(list:Taasmoutput;const r:Treference);override;
+        {!!!
         procedure allocexplicitregisters(list:Taasmoutput;rt:Tregistertype;r:Tsuperregisterset);override;
         procedure deallocexplicitregisters(list:Taasmoutput;rt:Tregistertype;r:Tsuperregisterset);override;
         procedure add_move_instruction(instr:Taicpu);override;
+        }
 
         { passing parameters, per default the parameter is pushed }
         { nr gives the number of the parameter (enumerated from   }
@@ -195,6 +195,60 @@ const
       end;
 
 
+    function tcgppc.getintregister(list:Taasmoutput;size:Tcgsize):Tregister;
+      begin
+        result:=rgint.getregister(list,cgsize2subreg(size));
+      end;
+
+
+    function tcgppc.getaddressregister(list:Taasmoutput):Tregister;
+      begin
+        result:=rgint.getregister(list,R_SUBWHOLE);
+      end;
+
+
+    function tcgppc.getfpuregister(list:Taasmoutput;size:Tcgsize):Tregister;
+      begin
+        result:=rgfpu.getregister(list,R_SUBWHOLE);
+      end;
+
+
+    function tcgppc.getmmregister(list:Taasmoutput;size:Tcgsize):Tregister;
+      begin
+        result:=rgmm.getregister(list,R_SUBNONE);
+      end;
+
+
+    procedure tcgppc.getexplicitregister(list:Taasmoutput;r:Tregister);
+      begin
+        case getregtype(r) of
+          R_INTREGISTER :
+            rgint.getexplicitregister(list,r);
+          R_MMREGISTER :
+            rgmm.getexplicitregister(list,r);
+          R_FPUREGISTER :
+            rgfpu.getexplicitregister(list,r);
+          else
+            internalerror(200310091);
+        end;
+      end;
+
+
+    procedure tcgppc.ungetregister(list:Taasmoutput;r:Tregister);
+      begin
+        case getregtype(r) of
+          R_INTREGISTER :
+            rgint.ungetregister(list,r);
+          R_FPUREGISTER :
+            rgfpu.ungetregister(list,r);
+          R_MMREGISTER :
+            rgmm.ungetregister(list,r);
+          else
+            internalerror(200310091);
+        end;
+      end;
+
+
     procedure tcgppc.a_param_const(list : taasmoutput;size : tcgsize;a : aword;const locpara : tparalocation);
       var
         ref: treference;
@@ -2387,7 +2441,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.129  2003-10-13 01:58:04  florian
+  Revision 1.130  2003-10-17 01:22:08  florian
+    * compilation of the powerpc compiler fixed
+
+  Revision 1.129  2003/10/13 01:58:04  florian
     * some ideas for mm support implemented
 
   Revision 1.128  2003/10/11 16:06:42  florian

+ 36 - 33
compiler/powerpc/nppcadd.pas

@@ -106,7 +106,7 @@ interface
         secondpass(right);
         if pushedfpu then
           begin
-            tmpreg := rg.getregisterfpu(exprasmlist,left.location.size);
+            tmpreg := cg.getfpuregister(exprasmlist,left.location.size);
             cg.a_loadfpu_loc_reg(exprasmlist,left.location,tmpreg);
             location_reset(left.location,LOC_FPUREGISTER,left.location.size);
             left.location.register := tmpreg;
@@ -156,9 +156,9 @@ interface
         if not(cmpop) and
            (location.register = NR_NO) then
          begin
-           location.register := rg.getregisterint(exprasmlist,OS_INT);
+           location.register := cg.getintregister(exprasmlist,OS_INT);
            if is_64bit(resulttype.def) then
-             location.registerhigh := rg.getregisterint(exprasmlist,OS_INT);
+             location.registerhigh := cg.getintregister(exprasmlist,OS_INT);
          end;
       end;
 
@@ -227,7 +227,7 @@ interface
             else
               begin
                 useconst := false;
-                tmpreg := rg.getregisterint(exprasmlist,OS_INT);
+                tmpreg := cg.getintregister(exprasmlist,OS_INT);
                 cg.a_load_const_reg(exprasmlist,OS_INT,
                   aword(right.location.value),tmpreg);
                end
@@ -255,7 +255,7 @@ interface
             begin
               exprasmlist.concat(taicpu.op_reg_reg(op,
                 left.location.register,tmpreg));
-              rg.ungetregisterint(exprasmlist,tmpreg);
+              cg.ungetregister(exprasmlist,tmpreg);
             end
         else
           exprasmlist.concat(taicpu.op_reg_reg(op,
@@ -469,7 +469,7 @@ interface
             else if right.location.loc = LOC_FPUREGISTER then
               location.register := right.location.register
             else
-              location.register := rg.getregisterfpu(exprasmlist,location.size);
+              location.register := cg.getfpuregister(exprasmlist,location.size);
           end
         else
          begin
@@ -526,7 +526,7 @@ interface
 
         if not(cmpop) and
            (location.register = NR_NO) then
-          location.register := rg.getregisterint(exprasmlist,OS_INT);
+          location.register := cg.getintregister(exprasmlist,OS_INT);
 
         case nodetype of
           addn :
@@ -545,7 +545,7 @@ interface
                       left.location.register,location.register)
                   else
                     begin
-                      tmpreg := rg.getregisterint(exprasmlist,OS_INT);
+                      tmpreg := cg.getintregister(exprasmlist,OS_INT);
                       cg.a_load_const_reg(exprasmlist,OS_INT,1,tmpreg);
                       cg.a_op_reg_reg(exprasmlist,OP_SHL,OS_INT,
                         right.location.register,tmpreg);
@@ -555,7 +555,7 @@ interface
                       else
                         cg.a_op_const_reg_reg(exprasmlist,OP_OR,OS_INT,
                           aword(left.location.value),tmpreg,location.register);
-                      rg.ungetregisterint(exprasmlist,tmpreg);
+                      cg.ungetregister(exprasmlist,tmpreg);
                     end;
                   opdone := true;
                 end
@@ -585,12 +585,12 @@ interface
                 begin
                   if left.location.loc = LOC_CONSTANT then
                     begin
-                      tmpreg := rg.getregisterint(exprasmlist,OS_INT);
+                      tmpreg := cg.getintregister(exprasmlist,OS_INT);
                       cg.a_load_const_reg(exprasmlist,OS_INT,
                         aword(left.location.value),tmpreg);
                       exprasmlist.concat(taicpu.op_reg_reg_reg(A_ANDC,
                         location.register,tmpreg,right.location.register));
-                      rg.ungetregisterint(exprasmlist,tmpreg);
+                      cg.ungetregister(exprasmlist,tmpreg);
                     end
                   else
                     exprasmlist.concat(taicpu.op_reg_reg_reg(A_ANDC,
@@ -612,7 +612,7 @@ interface
                   (nodetype = gten)) then
                 swapleftright;
               // now we have to check whether left >= right
-              tmpreg := rg.getregisterint(exprasmlist,OS_INT);
+              tmpreg := cg.getintregister(exprasmlist,OS_INT);
               if left.location.loc = LOC_CONSTANT then
                 begin
                   cg.a_op_const_reg_reg(exprasmlist,OP_AND,OS_INT,
@@ -634,7 +634,7 @@ interface
                     exprasmlist.concat(taicpu.op_reg_reg_reg(A_ANDC_,tmpreg,
                       right.location.register,left.location.register));
                 end;
-              rg.ungetregisterint(exprasmlist,tmpreg);
+              cg.ungetregister(exprasmlist,tmpreg);
               location.resflags.cr := RS_CR0;
               location.resflags.flag := F_EQ;
               opdone := true;
@@ -860,11 +860,11 @@ interface
                       else
                         begin
                           if (aword(right.location.valueqword) <> 0) then
-                            tempreg64.reglo := rg.getregisterint(exprasmlist,OS_32)
+                            tempreg64.reglo := cg.getintregister(exprasmlist,OS_32)
                           else
                             tempreg64.reglo := left.location.registerlow;
                           if ((right.location.valueqword shr 32) <> 0) then
-                            tempreg64.reghi := rg.getregisterint(exprasmlist,OS_32)
+                            tempreg64.reghi := cg.getintregister(exprasmlist,OS_32)
                           else
                             tempreg64.reghi := left.location.registerhigh;
                         end;
@@ -895,8 +895,8 @@ interface
                     end
                   else
                     begin
-                       tempreg64.reglo := rg.getregisterint(exprasmlist,OS_INT);
-                       tempreg64.reghi := rg.getregisterint(exprasmlist,OS_INT);
+                       tempreg64.reglo := cg.getintregister(exprasmlist,OS_INT);
+                       tempreg64.reghi := cg.getintregister(exprasmlist,OS_INT);
                        cg64.a_op64_reg_reg_reg(exprasmlist,OP_XOR,
                          left.location.register64,right.location.register64,
                          tempreg64);
@@ -907,9 +907,9 @@ interface
                     tempreg64.reglo,tempreg64.reghi));
                   cg.a_reg_dealloc(exprasmlist,NR_R0);
                   if (tempreg64.reglo <> left.location.registerlow) then
-                    rg.ungetregisterint(exprasmlist,tempreg64.reglo);
+                    cg.ungetregister(exprasmlist,tempreg64.reglo);
                   if (tempreg64.reghi <> left.location.registerhigh) then
-                    rg.ungetregisterint(exprasmlist,tempreg64.reghi);
+                    cg.ungetregister(exprasmlist,tempreg64.reghi);
 
                   location_reset(location,LOC_FLAGS,OS_NO);
                   location.resflags := getresflags;
@@ -918,8 +918,8 @@ interface
                 begin
                   if (location.registerlow = NR_NO) then
                     begin
-                      location.registerlow := rg.getregisterint(exprasmlist,OS_INT);
-                      location.registerhigh := rg.getregisterint(exprasmlist,OS_INT);
+                      location.registerlow := cg.getintregister(exprasmlist,OS_INT);
+                      location.registerhigh := cg.getintregister(exprasmlist,OS_INT);
                     end;
 
                   if (left.location.loc = LOC_CONSTANT) then
@@ -940,8 +940,8 @@ interface
                     begin
                       if (location.registerlow = NR_NO) then
                         begin
-                         location.registerlow := rg.getregisterint(exprasmlist,OS_INT);
-                         location.registerhigh := rg.getregisterint(exprasmlist,OS_INT);
+                         location.registerlow := cg.getintregister(exprasmlist,OS_INT);
+                         location.registerhigh := cg.getintregister(exprasmlist,OS_INT);
                       end;
                       if right.location.loc <> LOC_CONSTANT then
                         // reg64 - reg64
@@ -958,8 +958,8 @@ interface
                     begin
                       if (location.registerlow = NR_NO) then
                         begin
-                         location.registerlow := rg.getregisterint(exprasmlist,OS_INT);
-                         location.registerhigh := rg.getregisterint(exprasmlist,OS_INT);
+                         location.registerlow := cg.getintregister(exprasmlist,OS_INT);
+                         location.registerhigh := cg.getintregister(exprasmlist,OS_INT);
                       end;
                       if (int64(left.location.valueqword) >= low(smallint)) and
                          (int64(left.location.valueqword) <= high(smallint)) then
@@ -986,8 +986,8 @@ interface
                       // (const32 shl 32) - reg64
                       if (location.registerlow = NR_NO) then
                         begin
-                         location.registerlow := rg.getregisterint(exprasmlist,OS_INT);
-                         location.registerhigh := rg.getregisterint(exprasmlist,OS_INT);
+                         location.registerlow := cg.getintregister(exprasmlist,OS_INT);
+                         location.registerhigh := cg.getintregister(exprasmlist,OS_INT);
                       end;
                       exprasmlist.concat(taicpu.op_reg_reg_const(A_SUBFIC,
                         location.registerlow,right.location.registerlow,0));
@@ -1006,8 +1006,8 @@ interface
                         location.register64 := left.location.register64
                       else if (location.registerlow = NR_NO) then
                         begin
-                         location.registerlow := rg.getregisterint(exprasmlist,OS_INT);
-                         location.registerhigh := rg.getregisterint(exprasmlist,OS_INT);
+                         location.registerlow := cg.getintregister(exprasmlist,OS_INT);
+                         location.registerhigh := cg.getintregister(exprasmlist,OS_INT);
                         end;
                       cg64.a_op64_reg_reg_reg(exprasmlist,OP_SUB,
                         right.location.register64,left.location.register64,
@@ -1330,7 +1330,7 @@ interface
 
          if (location.register = NR_NO) and
             not(cmpop) then
-           location.register := rg.getregisterint(exprasmlist,OS_INT);
+           location.register := cg.getintregister(exprasmlist,OS_INT);
 
          if not(cs_check_overflow in aktlocalswitches) or
             (cmpop) or
@@ -1388,12 +1388,12 @@ interface
                        end
                      else
                        begin
-                         tmpreg := rg.getregisterint(exprasmlist,OS_INT);
+                         tmpreg := cg.getintregister(exprasmlist,OS_INT);
                          cg.a_load_const_reg(exprasmlist,OS_INT,
                            aword(left.location.value),tmpreg);
                          cg.a_op_reg_reg_reg(exprasmlist,OP_SUB,OS_INT,
                            right.location.register,tmpreg,location.register);
-                         rg.ungetregisterint(exprasmlist,tmpreg);
+                         cg.ungetregister(exprasmlist,tmpreg);
                        end;
                  end;
                ltn,lten,gtn,gten,equaln,unequaln :
@@ -1428,7 +1428,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.36  2003-10-01 20:34:49  peter
+  Revision 1.37  2003-10-17 01:22:08  florian
+    * compilation of the powerpc compiler fixed
+
+  Revision 1.36  2003/10/01 20:34:49  peter
     * procinfo unit contains tprocinfo
     * cginfo renamed to cgbase
     * moved cgmessage to verbose

+ 21 - 18
compiler/powerpc/nppccnv.pas

@@ -188,7 +188,7 @@ implementation
               leftreg := left.location.register;
               if signed then
                 begin
-                  valuereg := rg.getregisterint(exprasmlist,OS_INT);
+                  valuereg := cg.getintregister(exprasmlist,OS_INT);
                   valuereg_is_scratch := true;
                 end
               else
@@ -196,7 +196,7 @@ implementation
             end;
           LOC_REFERENCE,LOC_CREFERENCE:
             begin
-              leftreg := rg.getregisterint(exprasmlist,OS_INT);
+              leftreg := cg.getintregister(exprasmlist,OS_INT);
               valuereg := leftreg;
               valuereg_is_scratch := true;
               if signed then
@@ -209,10 +209,10 @@ implementation
           else
             internalerror(200110012);
          end;
-         tempreg := rg.getregisterint(exprasmlist,OS_INT);
+         tempreg := cg.getintregister(exprasmlist,OS_INT);
          exprasmlist.concat(taicpu.op_reg_const(A_LIS,tempreg,$4330));
          cg.a_load_reg_ref(exprasmlist,OS_32,OS_32,tempreg,ref);
-         rg.ungetregisterint(exprasmlist,tempreg);
+         cg.ungetregister(exprasmlist,tempreg);
          if signed then
            exprasmlist.concat(taicpu.op_reg_reg_const(A_XORIS,valuereg,
              { xoris expects a unsigned 16 bit int (FK) }
@@ -221,21 +221,21 @@ implementation
          cg.a_load_reg_ref(exprasmlist,OS_32,OS_32,valuereg,ref);
          dec(ref.offset,4);
          if (valuereg_is_scratch) then
-           rg.ungetregisterint(exprasmlist,valuereg);
+           cg.ungetregister(exprasmlist,valuereg);
 
          if (left.location.loc = LOC_REGISTER) or
             ((left.location.loc = LOC_CREGISTER) and
              not signed) then
-           rg.ungetregisterint(exprasmlist,leftreg)
+           cg.ungetregister(exprasmlist,leftreg)
          else
-           rg.ungetregisterint(exprasmlist,valuereg);
+           cg.ungetregister(exprasmlist,valuereg);
 
-         tmpfpureg := rg.getregisterfpu(exprasmlist,OS_F64);
+         tmpfpureg := cg.getfpuregister(exprasmlist,OS_F64);
          cg.a_loadfpu_ref_reg(exprasmlist,OS_F64,tempconst.location.reference,
            tmpfpureg);
          tempconst.free;
 
-         location.register := rg.getregisterfpu(exprasmlist,OS_F64);
+         location.register := cg.getfpuregister(exprasmlist,OS_F64);
          exprasmlist.concat(taicpu.op_reg_ref(A_LFD,location.register,
            ref));
 
@@ -243,7 +243,7 @@ implementation
 
          exprasmlist.concat(taicpu.op_reg_reg_reg(A_FSUB,location.register,
            location.register,tmpfpureg));
-         rg.ungetregisterfpu(exprasmlist,tmpfpureg,OS_F64);
+         cg.ungetregister(exprasmlist,tmpfpureg);
 
          { work around bug in some PowerPC processors }
          if (tfloatdef(resulttype.def).typ = s32real) then
@@ -301,18 +301,18 @@ implementation
                 if left.location.loc in [LOC_CREFERENCE,LOC_REFERENCE] then
                   begin
                     reference_release(exprasmlist,left.location.reference);
-                    hreg2:=rg.getregisterint(exprasmlist,OS_INT);
+                    hreg2:=cg.getintregister(exprasmlist,OS_INT);
                     if left.location.size in [OS_64,OS_S64] then
                       begin
                         cg.a_load_ref_reg(exprasmlist,OS_INT,OS_INT,
                          left.location.reference,hreg2);
-                        hreg1:=rg.getregisterint(exprasmlist,OS_INT);
+                        hreg1:=cg.getintregister(exprasmlist,OS_INT);
                         href:=left.location.reference;
                         inc(href.offset,4);
                         cg.a_load_ref_reg(exprasmlist,OS_INT,OS_INT,
                           href,hreg1);
                         cg.a_op_reg_reg_reg(exprasmlist,OP_OR,OS_32,hreg2,hreg1,hreg2);
-                        rg.ungetregisterint(exprasmlist,hreg1);
+                        cg.ungetregister(exprasmlist,hreg1);
                       end
                     else
                       cg.a_load_ref_reg(exprasmlist,opsize,opsize,
@@ -322,23 +322,23 @@ implementation
                   begin
                      if left.location.size in [OS_64,OS_S64] then
                        begin
-                          hreg2:=rg.getregisterint(exprasmlist,OS_32);
+                          hreg2:=cg.getintregister(exprasmlist,OS_32);
                           cg.a_op_reg_reg_reg(exprasmlist,OP_OR,OS_32,left.location.registerhigh,left.location.registerlow,hreg2);
                           location_release(exprasmlist,left.location);
                        end
                      else
                        hreg2 := left.location.register;
                   end;
-                hreg1 := rg.getregisterint(exprasmlist,OS_INT);
+                hreg1 := cg.getintregister(exprasmlist,OS_INT);
                 exprasmlist.concat(taicpu.op_reg_reg_const(A_SUBIC,hreg1,
                   hreg2,1));
                 exprasmlist.concat(taicpu.op_reg_reg_reg(A_SUBFE,hreg1,hreg1,
                   hreg2));
-                rg.ungetregisterint(exprasmlist,hreg2);
+                cg.ungetregister(exprasmlist,hreg2);
               end;
             LOC_FLAGS :
               begin
-                hreg1:=rg.getregisterint(exprasmlist,OS_INT);
+                hreg1:=cg.getintregister(exprasmlist,OS_INT);
                 resflags:=left.location.resflags;
                 cg.g_flags2reg(exprasmlist,location.size,resflags,hreg1);
               end;
@@ -431,7 +431,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.43  2003-10-01 20:34:49  peter
+  Revision 1.44  2003-10-17 01:22:08  florian
+    * compilation of the powerpc compiler fixed
+
+  Revision 1.43  2003/10/01 20:34:49  peter
     * procinfo unit contains tprocinfo
     * cginfo renamed to cgbase
     * moved cgmessage to verbose

+ 5 - 2
compiler/powerpc/nppcinl.pas

@@ -91,7 +91,7 @@ implementation
            if (location.loc = LOC_CFPUREGISTER) then
              begin
                location.loc := LOC_FPUREGISTER;
-               location.register := rg.getregisterfpu(exprasmlist,OS_F64);
+               location.register := cg.getfpuregister(exprasmlist,OS_F64);
              end;
          end;
 
@@ -116,7 +116,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.10  2003-10-01 20:34:49  peter
+  Revision 1.11  2003-10-17 01:22:08  florian
+    * compilation of the powerpc compiler fixed
+
+  Revision 1.10  2003/10/01 20:34:49  peter
     * procinfo unit contains tprocinfo
     * cginfo renamed to cgbase
     * moved cgmessage to verbose

+ 24 - 21
compiler/powerpc/nppcmat.pas

@@ -93,12 +93,12 @@ implementation
          if (location.loc = LOC_CREGISTER) then
            begin
              location.loc := LOC_REGISTER;
-             location.register := rg.getregisterint(exprasmlist,size);
+             location.register := cg.getintregister(exprasmlist,size);
              resultreg := location.register;
            end;
          if (nodetype = modn) then
            begin
-             resultreg := rg.getregisterint(exprasmlist,size);
+             resultreg := cg.getintregister(exprasmlist,size);
            end;
 
          if (nodetype = divn) and
@@ -138,18 +138,18 @@ implementation
              begin
                exprasmlist.concat(taicpu.op_reg_reg_reg(A_MULLW,resultreg,
                  divider,resultreg));
-               rg.ungetregisterint(exprasmlist,divider);
+               cg.ungetregister(exprasmlist,divider);
                exprasmlist.concat(taicpu.op_reg_reg_reg(A_SUB,location.register,
                  numerator,resultreg));
-               rg.ungetregisterint(exprasmlist,resultreg);
+               cg.ungetregister(exprasmlist,resultreg);
                resultreg := location.register;
              end
            else
-             rg.ungetregisterint(exprasmlist,divider);
+             cg.ungetregister(exprasmlist,divider);
            end;
        { free used registers }
         if numerator <> resultreg then
-          rg.ungetregisterint(exprasmlist,numerator);
+          cg.ungetregister(exprasmlist,numerator);
         { set result location }
         location.loc:=LOC_REGISTER;
         location.register:=resultreg;
@@ -190,8 +190,8 @@ implementation
              if (location.loc = LOC_CREGISTER) then
                begin
                  location.loc := LOC_REGISTER;
-                 location.registerhigh := rg.getregisterint(exprasmlist,OS_32);
-                 location.registerlow := rg.getregisterint(exprasmlist,OS_32);
+                 location.registerhigh := cg.getintregister(exprasmlist,OS_32);
+                 location.registerlow := cg.getintregister(exprasmlist,OS_32);
                end;
              if (right.nodetype = ordconstn) then
                begin
@@ -261,7 +261,7 @@ implementation
                      location.registerlow := resultreg;
                    end;
 
-                 rg.getexplicitregisterint(exprasmlist,NR_R0);
+                 cg.getexplicitregister(exprasmlist,NR_R0);
                  exprasmlist.concat(taicpu.op_reg_reg_const(A_SUBFIC,
                    NR_R0,hregister1,32));
                  exprasmlist.concat(taicpu.op_reg_reg_reg(asmop1,
@@ -278,7 +278,7 @@ implementation
                    location.registerhigh,location.registerhigh,NR_R0));
                  exprasmlist.concat(taicpu.op_reg_reg_reg(asmop1,
                    location.registerlow,hregisterlow,hregister1));
-                 rg.ungetregisterint(exprasmlist,NR_R0);
+                 cg.ungetregister(exprasmlist,NR_R0);
 
                  if nodetype = shrn then
                    begin
@@ -287,7 +287,7 @@ implementation
                      location.registerlow := resultreg;
                    end;
 
-                   rg.ungetregisterint(exprasmlist,hregister1);
+                   cg.ungetregister(exprasmlist,hregister1);
                end
            end
          else
@@ -300,7 +300,7 @@ implementation
              if (location.loc = LOC_CREGISTER) then
                begin
                  location.loc := LOC_REGISTER;
-                 resultreg := rg.getregisterint(exprasmlist,OS_32);
+                 resultreg := cg.getintregister(exprasmlist,OS_32);
                  location.register := resultreg;
                end;
 
@@ -323,7 +323,7 @@ implementation
                   cg.a_op_reg_reg_reg(exprasmlist,op,OS_32,hregister2,
                     hregister1,resultreg);
 
-                  rg.ungetregisterint(exprasmlist,hregister2);
+                  cg.ungetregister(exprasmlist,hregister2);
                 end;
            end;
       end;
@@ -347,8 +347,8 @@ implementation
              location_copy(location,left.location);
              if (location.loc = LOC_CREGISTER) then
                begin
-                 location.registerlow := rg.getregisterint(exprasmlist,OS_INT);
-                 location.registerhigh := rg.getregisterint(exprasmlist,OS_INT);
+                 location.registerlow := cg.getintregister(exprasmlist,OS_INT);
+                 location.registerhigh := cg.getintregister(exprasmlist,OS_INT);
                  location.loc := LOC_REGISTER;
                end;
              exprasmlist.concat(taicpu.op_reg_reg_const(A_SUBFIC,
@@ -374,15 +374,15 @@ implementation
                   begin
                      src1 := left.location.register;
                      if left.location.loc = LOC_CREGISTER then
-                       location.register := rg.getregisterint(exprasmlist,OS_INT)
+                       location.register := cg.getintregister(exprasmlist,OS_INT)
                      else
-                       location.register := rg.getregisterfpu(exprasmlist,location.size);
+                       location.register := cg.getfpuregister(exprasmlist,location.size);
                   end;
                 LOC_REFERENCE,LOC_CREFERENCE:
                   begin
                      if (left.resulttype.def.deftype=floatdef) then
                        begin
-                          src1 := rg.getregisterfpu(exprasmlist,def_cgsize(left.resulttype.def));
+                          src1 := cg.getfpuregister(exprasmlist,def_cgsize(left.resulttype.def));
                           location.register := src1;
                           cg.a_loadfpu_ref_reg(exprasmlist,
                             def_cgsize(left.resulttype.def),
@@ -390,7 +390,7 @@ implementation
                        end
                      else
                        begin
-                          src1 := rg.getregisterint(exprasmlist,OS_32);
+                          src1 := cg.getintregister(exprasmlist,OS_32);
                           location.register:= src1;
                           cg.a_load_ref_reg(exprasmlist,OS_32,OS_32,
                             left.location.reference,src1);
@@ -493,7 +493,7 @@ implementation
              location_force_reg(exprasmlist,left.location,def_cgsize(left.resulttype.def),false);
              location_copy(location,left.location);
              if location.loc=LOC_CREGISTER then
-              location.register := rg.getregisterint(exprasmlist,OS_INT);
+              location.register := cg.getintregister(exprasmlist,OS_INT);
              { perform the NOT operation }
              exprasmlist.concat(taicpu.op_reg_reg(A_NOT,location.register,
                left.location.register));
@@ -508,7 +508,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.34  2003-10-01 20:34:49  peter
+  Revision 1.35  2003-10-17 01:22:08  florian
+    * compilation of the powerpc compiler fixed
+
+  Revision 1.34  2003/10/01 20:34:49  peter
     * procinfo unit contains tprocinfo
     * cginfo renamed to cgbase
     * moved cgmessage to verbose

+ 6 - 3
compiler/powerpc/nppcset.pas

@@ -78,11 +78,11 @@ implementation
                 hregister,value))
             else
               begin
-                tmpreg := rg.getregisterint(exprasmlist,OS_INT);
+                tmpreg := cg.getintregister(exprasmlist,OS_INT);
                  cg.a_load_const_reg(exprasmlist,OS_INT,aword(value),tmpreg);
                 exprasmlist.concat(taicpu.op_reg_reg_reg(A_ADD_,hregister,
                   hregister,tmpreg));
-                rg.ungetregisterint(exprasmlist,tmpreg);
+                cg.ungetregister(exprasmlist,tmpreg);
                end;
           end;
 
@@ -158,7 +158,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.11  2003-10-01 20:34:49  peter
+  Revision 1.12  2003-10-17 01:22:08  florian
+    * compilation of the powerpc compiler fixed
+
+  Revision 1.11  2003/10/01 20:34:49  peter
     * procinfo unit contains tprocinfo
     * cginfo renamed to cgbase
     * moved cgmessage to verbose