mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 10:49:09 +02:00
* R_SUB_FS added to make a difference between double and single
floats, required for sparc only
This commit is contained in:
parent
6ab944bfcf
commit
d68c75f65a
@ -123,7 +123,9 @@ interface
|
|||||||
R_SUBW, { = 3; 16 bits, Like AX }
|
R_SUBW, { = 3; 16 bits, Like AX }
|
||||||
R_SUBD, { = 4; 32 bits, Like EAX }
|
R_SUBD, { = 4; 32 bits, Like EAX }
|
||||||
R_SUBQ, { = 5; 64 bits, Like RAX }
|
R_SUBQ, { = 5; 64 bits, Like RAX }
|
||||||
R_SUBFD { = 6; Float that allocates 2 FPU registers }
|
{ For Sparc floats that use F0:F1 to store doubles }
|
||||||
|
R_SUBFS, { = 6; Float that allocates 1 FPU register }
|
||||||
|
R_SUBFD { = 7; Float that allocates 2 FPU registers }
|
||||||
);
|
);
|
||||||
|
|
||||||
TSuperRegister = type word;
|
TSuperRegister = type word;
|
||||||
@ -463,47 +465,44 @@ implementation
|
|||||||
|
|
||||||
function generic_regname(r:tregister):string;
|
function generic_regname(r:tregister):string;
|
||||||
var
|
var
|
||||||
t,sub : char;
|
|
||||||
nr : string[12];
|
nr : string[12];
|
||||||
begin
|
begin
|
||||||
|
str(getsupreg(r),nr);
|
||||||
case getregtype(r) of
|
case getregtype(r) of
|
||||||
R_INTREGISTER:
|
R_INTREGISTER:
|
||||||
t:='i';
|
result:='ireg'+nr;
|
||||||
R_FPUREGISTER:
|
R_FPUREGISTER:
|
||||||
t:='f';
|
result:='freg'+nr;
|
||||||
R_MMXREGISTER:
|
|
||||||
t:='x';
|
|
||||||
R_MMREGISTER:
|
R_MMREGISTER:
|
||||||
t:='m';
|
result:='mreg'+nr;
|
||||||
|
R_MMXREGISTER:
|
||||||
|
result:='xreg'+nr;
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
result:='INVALID';
|
result:='INVALID';
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
str(getsupreg(r),nr);
|
|
||||||
case getsubreg(r) of
|
case getsubreg(r) of
|
||||||
R_SUBNONE:
|
R_SUBNONE:
|
||||||
sub:=' ';
|
;
|
||||||
R_SUBL:
|
R_SUBL:
|
||||||
sub:='l';
|
result:=result+'l';
|
||||||
R_SUBH:
|
R_SUBH:
|
||||||
sub:='h';
|
result:=result+'h';
|
||||||
R_SUBW:
|
R_SUBW:
|
||||||
sub:='w';
|
result:=result+'w';
|
||||||
R_SUBD:
|
R_SUBD:
|
||||||
sub:='d';
|
result:=result+'d';
|
||||||
R_SUBQ:
|
R_SUBQ:
|
||||||
sub:='q';
|
result:=result+'q';
|
||||||
|
R_SUBFS:
|
||||||
|
result:=result+'fs';
|
||||||
R_SUBFD:
|
R_SUBFD:
|
||||||
sub:='f';
|
result:=result+'fd';
|
||||||
else
|
else
|
||||||
internalerror(200308252);
|
internalerror(200308252);
|
||||||
end;
|
end;
|
||||||
if sub<>' ' then
|
|
||||||
result:=t+'reg'+nr+sub
|
|
||||||
else
|
|
||||||
result:=t+'reg'+nr;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -584,7 +583,11 @@ finalization
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.84 2004-01-09 22:02:29 daniel
|
Revision 1.85 2004-01-12 16:35:05 peter
|
||||||
|
* R_SUB_FS added to make a difference between double and single
|
||||||
|
floats, required for sparc only
|
||||||
|
|
||||||
|
Revision 1.84 2004/01/09 22:02:29 daniel
|
||||||
* Degree=0 problem fixed
|
* Degree=0 problem fixed
|
||||||
* Degree to high problem fixed
|
* Degree to high problem fixed
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user