* R_SUB_FS added to make a difference between double and single

floats, required for sparc only
This commit is contained in:
peter 2004-01-12 16:35:05 +00:00
parent 6ab944bfcf
commit d68c75f65a

View File

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