mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-22 02:49:28 +02:00
* MIPS: fixed cgsize2subreg to return correct result for float registers.
- TCGMIPS.getfpuregister override is no longer necessary with the above fix. git-svn-id: trunk@24893 -
This commit is contained in:
parent
b6bfa864d4
commit
7e0ae2e984
@ -39,7 +39,6 @@ type
|
|||||||
|
|
||||||
procedure init_register_allocators; override;
|
procedure init_register_allocators; override;
|
||||||
procedure done_register_allocators; override;
|
procedure done_register_allocators; override;
|
||||||
function getfpuregister(list: tasmlist; size: Tcgsize): Tregister; override;
|
|
||||||
/// { needed by cg64 }
|
/// { needed by cg64 }
|
||||||
procedure make_simple_ref(list: tasmlist; var ref: treference);
|
procedure make_simple_ref(list: tasmlist; var 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);
|
||||||
@ -445,15 +444,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TCGMIPS.getfpuregister(list: tasmlist; size: Tcgsize): Tregister;
|
|
||||||
begin
|
|
||||||
if size = OS_F64 then
|
|
||||||
Result := rg[R_FPUREGISTER].getregister(list, R_SUBFD)
|
|
||||||
else
|
|
||||||
Result := rg[R_FPUREGISTER].getregister(list, R_SUBFS);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TCGMIPS.a_loadfpu_ref_cgpara(list: tasmlist; size: tcgsize; const ref: treference; const paraloc: TCGPara);
|
procedure TCGMIPS.a_loadfpu_ref_cgpara(list: tasmlist; size: tcgsize; const ref: treference; const paraloc: TCGPara);
|
||||||
var
|
var
|
||||||
href, href2: treference;
|
href, href2: treference;
|
||||||
|
@ -296,10 +296,17 @@ unit cpubase;
|
|||||||
|
|
||||||
function cgsize2subreg(regtype: tregistertype; s:tcgsize):tsubregister;
|
function cgsize2subreg(regtype: tregistertype; s:tcgsize):tsubregister;
|
||||||
begin
|
begin
|
||||||
if s in [OS_64,OS_S64] then
|
case regtype of
|
||||||
cgsize2subreg:=R_SUBQ
|
R_FPUREGISTER:
|
||||||
|
if s=OS_F32 then
|
||||||
|
result:=R_SUBFS
|
||||||
|
else if s=OS_F64 then
|
||||||
|
result:=R_SUBFD
|
||||||
|
else
|
||||||
|
internalerror(2013021301);
|
||||||
else
|
else
|
||||||
cgsize2subreg:=R_SUBWHOLE;
|
result:=R_SUBWHOLE;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user