diff --git a/compiler/ncgadd.pas b/compiler/ncgadd.pas index 5cfe9a8817..f2887b3271 100644 --- a/compiler/ncgadd.pas +++ b/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 diff --git a/compiler/ncgcal.pas b/compiler/ncgcal.pas index 78af8a5abe..ccf1cbee1e 100644 --- a/compiler/ncgcal.pas +++ b/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 diff --git a/compiler/node.pas b/compiler/node.pas index 81eb36c6a2..6413c8c91d 100644 --- a/compiler/node.pas +++ b/compiler/node.pas @@ -614,7 +614,7 @@ implementation else write(t,', resulttype = '); 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 diff --git a/compiler/powerpc/cgcpu.pas b/compiler/powerpc/cgcpu.pas index bf89112891..44cdb7bd8f 100644 --- a/compiler/powerpc/cgcpu.pas +++ b/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 diff --git a/compiler/powerpc/nppcadd.pas b/compiler/powerpc/nppcadd.pas index fdec8a5370..d5c83f6c08 100644 --- a/compiler/powerpc/nppcadd.pas +++ b/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 diff --git a/compiler/powerpc/nppccnv.pas b/compiler/powerpc/nppccnv.pas index f84841a44d..95987a2684 100644 --- a/compiler/powerpc/nppccnv.pas +++ b/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 diff --git a/compiler/powerpc/nppcinl.pas b/compiler/powerpc/nppcinl.pas index 33d4f08962..9ae70ee618 100644 --- a/compiler/powerpc/nppcinl.pas +++ b/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 diff --git a/compiler/powerpc/nppcmat.pas b/compiler/powerpc/nppcmat.pas index 38a8b0bf0c..ec3f325d7c 100644 --- a/compiler/powerpc/nppcmat.pas +++ b/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 diff --git a/compiler/powerpc/nppcset.pas b/compiler/powerpc/nppcset.pas index 5dedc2ceeb..6a942d17dc 100644 --- a/compiler/powerpc/nppcset.pas +++ b/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