- many emitXXX removed from cga.pas in order to remove that file.

This commit is contained in:
mazen 2002-12-25 20:59:49 +00:00
parent 5c55264be0
commit 33b405859b
3 changed files with 30 additions and 85 deletions

View File

@ -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

View File

@ -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

View File

@ -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