mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-05 10:46:19 +02:00
- SPARC: removed 3 code generator methods, they provide no difference in generated code from generic code generator.
git-svn-id: trunk@26307 -
This commit is contained in:
parent
f2e73b5e6f
commit
f8a60522d4
@ -46,9 +46,6 @@ interface
|
|||||||
procedure handle_load_store(list:TAsmList;isstore:boolean;op: tasmop;reg:tregister;ref: treference);
|
procedure handle_load_store(list:TAsmList;isstore:boolean;op: tasmop;reg:tregister;ref: treference);
|
||||||
procedure handle_reg_const_reg(list:TAsmList;op:Tasmop;src:tregister;a:tcgint;dst:tregister);
|
procedure handle_reg_const_reg(list:TAsmList;op:Tasmop;src:tregister;a:tcgint;dst:tregister);
|
||||||
{ parameter }
|
{ parameter }
|
||||||
procedure a_load_const_cgpara(list:TAsmList;size:tcgsize;a:tcgint;const paraloc:TCGPara);override;
|
|
||||||
procedure a_load_ref_cgpara(list:TAsmList;sz:tcgsize;const r:TReference;const paraloc:TCGPara);override;
|
|
||||||
procedure a_loadaddr_ref_cgpara(list:TAsmList;const r:TReference;const paraloc:TCGPara);override;
|
|
||||||
procedure a_loadfpu_reg_cgpara(list : TAsmList;size : tcgsize;const r : tregister;const paraloc : TCGPara);override;
|
procedure a_loadfpu_reg_cgpara(list : TAsmList;size : tcgsize;const r : tregister;const paraloc : TCGPara);override;
|
||||||
procedure a_loadfpu_ref_cgpara(list : TAsmList;size : tcgsize;const ref : treference;const paraloc : TCGPara);override;
|
procedure a_loadfpu_ref_cgpara(list : TAsmList;size : tcgsize;const ref : treference;const paraloc : TCGPara);override;
|
||||||
procedure a_call_name(list:TAsmList;const s:string; weak: boolean);override;
|
procedure a_call_name(list:TAsmList;const s:string; weak: boolean);override;
|
||||||
@ -341,100 +338,6 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TCgSparc.a_load_const_cgpara(list:TAsmList;size:tcgsize;a:tcgint;const paraloc:TCGPara);
|
|
||||||
var
|
|
||||||
Ref:TReference;
|
|
||||||
begin
|
|
||||||
paraloc.check_simple_location;
|
|
||||||
paramanager.alloccgpara(list,paraloc);
|
|
||||||
case paraloc.location^.loc of
|
|
||||||
LOC_REGISTER,LOC_CREGISTER:
|
|
||||||
a_load_const_reg(list,size,a,paraloc.location^.register);
|
|
||||||
LOC_REFERENCE:
|
|
||||||
begin
|
|
||||||
{ Code conventions need the parameters being allocated in %o6+92 }
|
|
||||||
with paraloc.location^.Reference do
|
|
||||||
begin
|
|
||||||
if (Index=NR_SP) and (Offset<Target_info.first_parm_offset) then
|
|
||||||
InternalError(2002081104);
|
|
||||||
reference_reset_base(ref,index,offset,paraloc.alignment);
|
|
||||||
end;
|
|
||||||
a_load_const_ref(list,size,a,ref);
|
|
||||||
end;
|
|
||||||
else
|
|
||||||
InternalError(2002122200);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TCgSparc.a_load_ref_cgpara(list:TAsmList;sz:TCgSize;const r:TReference;const paraloc:TCGPara);
|
|
||||||
var
|
|
||||||
ref: treference;
|
|
||||||
tmpreg:TRegister;
|
|
||||||
begin
|
|
||||||
paraloc.check_simple_location;
|
|
||||||
paramanager.alloccgpara(list,paraloc);
|
|
||||||
with paraloc.location^ do
|
|
||||||
begin
|
|
||||||
case loc of
|
|
||||||
LOC_REGISTER,LOC_CREGISTER :
|
|
||||||
a_load_ref_reg(list,sz,paraloc.location^.size,r,Register);
|
|
||||||
LOC_REFERENCE:
|
|
||||||
begin
|
|
||||||
{ Code conventions need the parameters being allocated in %o6+92 }
|
|
||||||
with Reference do
|
|
||||||
begin
|
|
||||||
if (Index=NR_SP) and (Offset<Target_info.first_parm_offset) then
|
|
||||||
InternalError(2002081104);
|
|
||||||
reference_reset_base(ref,index,offset,paraloc.alignment);
|
|
||||||
end;
|
|
||||||
if g1_used then
|
|
||||||
tmpreg:=GetIntRegister(list,OS_INT)
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
tmpreg:=NR_G1;
|
|
||||||
g1_used:=true;
|
|
||||||
end;
|
|
||||||
a_load_ref_reg(list,sz,sz,r,tmpreg);
|
|
||||||
a_load_reg_ref(list,sz,sz,tmpreg,ref);
|
|
||||||
if tmpreg=NR_G1 then
|
|
||||||
g1_used:=false;
|
|
||||||
end;
|
|
||||||
else
|
|
||||||
internalerror(2002081103);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TCgSparc.a_loadaddr_ref_cgpara(list:TAsmList;const r:TReference;const paraloc:TCGPara);
|
|
||||||
var
|
|
||||||
Ref:TReference;
|
|
||||||
TmpReg:TRegister;
|
|
||||||
begin
|
|
||||||
paraloc.check_simple_location;
|
|
||||||
paramanager.alloccgpara(list,paraloc);
|
|
||||||
with paraloc.location^ do
|
|
||||||
begin
|
|
||||||
case loc of
|
|
||||||
LOC_REGISTER,LOC_CREGISTER:
|
|
||||||
a_loadaddr_ref_reg(list,r,register);
|
|
||||||
LOC_REFERENCE:
|
|
||||||
begin
|
|
||||||
reference_reset(ref,paraloc.alignment);
|
|
||||||
ref.base := reference.index;
|
|
||||||
ref.offset := reference.offset;
|
|
||||||
tmpreg:=GetAddressRegister(list);
|
|
||||||
a_loadaddr_ref_reg(list,r,tmpreg);
|
|
||||||
a_load_reg_ref(list,OS_ADDR,OS_ADDR,tmpreg,ref);
|
|
||||||
end;
|
|
||||||
else
|
|
||||||
internalerror(2002080701);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure tcgsparc.a_loadfpu_ref_cgpara(list : TAsmList;size : tcgsize;const ref : treference;const paraloc : TCGPara);
|
procedure tcgsparc.a_loadfpu_ref_cgpara(list : TAsmList;size : tcgsize;const ref : treference;const paraloc : TCGPara);
|
||||||
var
|
var
|
||||||
href,href2 : treference;
|
href,href2 : treference;
|
||||||
|
Loading…
Reference in New Issue
Block a user