mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-02 20:50:57 +01:00
+ thlcgobj.location_force_fpureg() implementation
git-svn-id: branches/jvmbackend@18370 -
This commit is contained in:
parent
c9dbd60b92
commit
b5ea6ab7d8
@ -416,7 +416,7 @@ unit hlcgobj;
|
||||
{ routines migrated from ncgutil }
|
||||
|
||||
procedure location_force_reg(list:TAsmList;var l:tlocation;src_size,dst_size:tdef;maybeconst:boolean);virtual;
|
||||
procedure location_force_fpureg(list:TAsmList;var l: tlocation;size: tdef;maybeconst:boolean);virtual;abstract;
|
||||
procedure location_force_fpureg(list:TAsmList;var l: tlocation;size: tdef;maybeconst:boolean);virtual;
|
||||
procedure location_force_mem(list:TAsmList;var l:tlocation;size:tdef);virtual;
|
||||
// procedure location_force_mmregscalar(list:TAsmList;var l: tlocation;size:tdef;maybeconst:boolean);virtual;abstract;
|
||||
// procedure location_force_mmreg(list:TAsmList;var l: tlocation;size:tdef;maybeconst:boolean);virtual;abstract;
|
||||
@ -1649,6 +1649,25 @@ implementation
|
||||
location_freetemp(list,oldloc);
|
||||
end;
|
||||
|
||||
procedure thlcgobj.location_force_fpureg(list: TAsmList; var l: tlocation; size: tdef; maybeconst: boolean);
|
||||
var
|
||||
reg : tregister;
|
||||
href : treference;
|
||||
begin
|
||||
if (l.loc<>LOC_FPUREGISTER) and
|
||||
((l.loc<>LOC_CFPUREGISTER) or (not maybeconst)) then
|
||||
begin
|
||||
{ if it's in an mm register, store to memory first }
|
||||
if (l.loc in [LOC_MMREGISTER,LOC_CMMREGISTER]) then
|
||||
internalerror(2011012903);
|
||||
reg:=getfpuregister(list,size);
|
||||
a_loadfpu_loc_reg(list,size,size,l,reg);
|
||||
location_freetemp(list,l);
|
||||
location_reset(l,LOC_FPUREGISTER,l.size);
|
||||
l.register:=reg;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure thlcgobj.location_force_mem(list: TAsmList; var l: tlocation; size: tdef);
|
||||
var
|
||||
r : treference;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user