diff --git a/compiler/sparc/cga.pas b/compiler/sparc/cga.pas index dae162be9c..21761cc725 100644 --- a/compiler/sparc/cga.pas +++ b/compiler/sparc/cga.pas @@ -23,22 +23,9 @@ interface uses cpuinfo,cpubase,cginfo, symconst,symtype,symdef,aasmbase,aasmtai,aasmcpu; -{$define TESTGETTEMP to store const that are written into temps for later release PM } function def_opsize(p1:tdef):topsize; function def_getreg(p1:tdef):tregister; procedure emitjmp(c:tasmcond;var l:tasmlabel); -procedure emit_none(i:tasmop;s:topsize); -procedure emit_const(i:tasmop;s:topsize;c:longint); -procedure emit_reg(i:tasmop;s:topsize;reg:tregister); -procedure emit_ref(i:tasmop;s:topsize;const ref:treference); -procedure emit_const_reg(i:tasmop;s:topsize;c:longint;reg:tregister); -procedure emit_const_ref(i:tasmop;s:topsize;c:longint;const ref:treference); -procedure emit_ref_reg(i:tasmop;s:topsize;const ref:treference;reg:tregister); -procedure emit_reg_ref(i:tasmop;s:topsize;reg:tregister;const ref:treference); -procedure emit_reg_reg(i:tasmop;s:topsize;reg1,reg2:tregister); -procedure emit_const_reg_reg(i:tasmop;s:topsize;c:longint;reg1,reg2:tregister); -procedure emit_reg_reg_reg(i:tasmop;s:topsize;reg1,reg2,reg3:tregister); -procedure emit_sym(i:tasmop;s:topsize;op:tasmsymbol); implementation uses cutils, @@ -81,61 +68,13 @@ procedure emitjmp(c:tasmcond;var l:tasmlabel); ai.is_jmp:=true; exprasmList.concat(ai); end; -procedure emit_none(i:tasmop;s:topsize); - begin - exprasmList.concat(Taicpu.Op_none(i)); - end; -procedure emit_reg(i:tasmop;s:topsize;reg:tregister); - begin - exprasmList.concat(Taicpu.Op_reg(i,reg)); - end; -procedure emit_ref(i:tasmop;s:topsize;const ref:treference); - begin - exprasmList.concat(Taicpu.Op_ref(i,ref)); - end; -procedure emit_const(i:tasmop;s:topsize;c:longint); - begin - exprasmList.concat(Taicpu.Op_const(i,aword(c))); - end; -procedure emit_const_reg(i:tasmop;s:topsize;c:longint;reg:tregister); - begin - exprasmList.concat(Taicpu.Op_const_reg(i,aword(c),reg)); - end; -procedure emit_const_ref(i:tasmop;s:topsize;c:longint;const ref:treference); - begin - //exprasmList.concat(Taicpu.Op_const_ref(i,s,aword(c),ref)); - InternalError(2002102102); - end; -procedure emit_ref_reg(i:tasmop;s:topsize;const ref:treference;reg:tregister); - begin - exprasmList.concat(Taicpu.Op_ref_reg(i,ref,reg)); - end; -procedure emit_reg_ref(i:tasmop;s:topsize;reg:tregister;const ref:treference); - begin - exprasmList.concat(Taicpu.Op_reg_ref(i,reg,ref)); - end; -procedure emit_reg_reg(i:tasmop;s:topsize;reg1,reg2:tregister); - begin - if reg1<>reg2 - then - exprasmList.concat(Taicpu.Op_reg_reg(i,reg1,reg2)); - end; -procedure emit_const_reg_reg(i:tasmop;s:topsize;c:longint;reg1,reg2:tregister); - begin - exprasmList.concat(Taicpu.Op_reg_const_reg(i,reg1,c,reg2)); - end; -procedure emit_reg_reg_reg(i:tasmop;s:topsize;reg1,reg2,reg3:tregister); - begin - exprasmList.concat(Taicpu.Op_reg_reg_reg(i,reg1,reg2,reg3)); - end; -procedure emit_sym(i:tasmop;s:topsize;op:tasmsymbol); - begin - exprasmList.concat(Taicpu.Op_sym(i,s,op)); - end; end. { $Log$ - Revision 1.5 2002-11-10 19:07:46 mazen + Revision 1.6 2002-12-25 20:59:49 mazen + - many emitXXX removed from cga.pas in order to remove that file. + + Revision 1.5 2002/11/10 19:07:46 mazen * SPARC calling mechanism almost OK (as in GCC./mppcsparc ) Revision 1.4 2002/11/06 11:31:24 mazen diff --git a/compiler/sparc/cgcpu.pas b/compiler/sparc/cgcpu.pas index ee5e9d0b1a..840b80583e 100644 --- a/compiler/sparc/cgcpu.pas +++ b/compiler/sparc/cgcpu.pas @@ -108,20 +108,20 @@ USES rgobj,tgobj,rgcpu,cpupi; { we implement the following routines because otherwise we can't } { instantiate the class since it's abstract } -procedure tcgSPARC.a_param_reg(list:TAasmOutput;size:tcgsize;r:tregister;CONST LocPara:TParaLocation); - BEGIN - IF(Size<>OS_32)AND(Size<>OS_S32) - THEN +procedure tcgSPARC.a_param_reg(list:TAasmOutput;size:tcgsize;r:tregister;const LocPara:TParaLocation); + begin + if(Size<>OS_32)and(Size<>OS_S32) + then InternalError(2002032212); - with list,LocPara do - case Loc of - LOC_REGISTER: - if r<>Register - then - Concat(taicpu.op_Reg_Reg_Reg(A_OR,r,R_G0,Register)); - else - InternalError(2002101002); - end; + with list,LocPara do + case Loc of + LOC_REGISTER: + if r<>Register + then + Concat(taicpu.op_Reg_Reg_Reg(A_OR,r,R_G0,Register)); + else + InternalError(2002101002); + end; end; procedure tcgSPARC.a_param_const(list:TAasmOutput;size:tcgsize;a:aword;CONST LocPara:TParaLocation); var @@ -1334,7 +1334,10 @@ BEGIN END. { $Log$ - Revision 1.28 2002-12-22 19:26:31 mazen + Revision 1.29 2002-12-25 20:59:49 mazen + - many emitXXX removed from cga.pas in order to remove that file. + + Revision 1.28 2002/12/22 19:26:31 mazen * many internal errors related to unimplemented nodes are fixed Revision 1.27 2002/12/21 23:21:47 mazen diff --git a/compiler/sparc/ncpuadd.pas b/compiler/sparc/ncpuadd.pas index 612a667911..9201f7859e 100644 --- a/compiler/sparc/ncpuadd.pas +++ b/compiler/sparc/ncpuadd.pas @@ -291,7 +291,7 @@ procedure TSparcAddNode.emit_generic_code(op:TAsmOp;OpSize:TOpSize;unsigned,extr begin if extra_not then - emit_reg(A_NOT,S_L,left.location.register); + exprasmList.concat(Taicpu.Op_reg(A_NOT,left.location.register)); exprasmList.concat(Taicpu.Op_reg_reg_reg(Op,right.location.register,left.location.register,right.location.register)); { newly swapped also set swapped flag } location_swap(left.location,right.location); @@ -301,7 +301,7 @@ procedure TSparcAddNode.emit_generic_code(op:TAsmOp;OpSize:TOpSize;unsigned,extr begin if extra_not then - emit_reg(A_NOT,S_L,right.location.register); + exprasmList.concat(Taicpu.Op_reg(A_NOT,right.location.register)); // emit_reg_reg(op,opsize,right.location.register,left.location.register); exprasmList.concat(Taicpu.Op_reg_reg_reg(Op,right.location.register,left.location.register,right.location.register)); end; @@ -314,7 +314,7 @@ procedure TSparcAddNode.emit_generic_code(op:TAsmOp;OpSize:TOpSize;unsigned,extr begin IF extra_not THEN - emit_reg(A_NOT,opsize,left.location.register); + exprasmList.concat(Taicpu.Op_reg(A_NOT,left.location.register)); // rg.getexplicitregisterint(exprasmlist,R_EDI); // cg.a_load_loc_reg(exprasmlist,right.location,R_EDI); // emit_reg_reg(op,opsize,left.location.register,R_EDI); @@ -338,12 +338,12 @@ procedure TSparcAddNode.emit_generic_code(op:TAsmOp;OpSize:TOpSize;unsigned,extr ELSE IF(op=A_SUB)AND(right.location.loc=LOC_CONSTANT)AND(right.location.value=1)AND NOT(cs_check_overflow in aktlocalswitches) THEN begin - emit_reg(A_DEC,opsize,left.location.register); + exprasmList.concat(Taicpu.Op_reg(A_DEC,left.location.register)); end ELSE IF(op=A_SMUL)AND(right.location.loc=LOC_CONSTANT)AND(ispowerof2(right.location.value,power))AND NOT(cs_check_overflow in aktlocalswitches) THEN begin - emit_const_reg(A_SLL,opsize,power,left.location.register); + exprasmList.concat(Taicpu.Op_const_reg(A_SLL,power,left.location.register)); end ELSE begin @@ -558,7 +558,10 @@ begin end. { $Log$ - Revision 1.2 2002-12-22 19:26:32 mazen + Revision 1.3 2002-12-25 20:59:49 mazen + - many emitXXX removed from cga.pas in order to remove that file. + + Revision 1.2 2002/12/22 19:26:32 mazen * many internal errors related to unimplemented nodes are fixed Revision 1.1 2002/12/21 23:21:47 mazen