From d68c75f65a72f0fd5c67fdd6be03998bdab1c40e Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 12 Jan 2004 16:35:05 +0000 Subject: [PATCH] * R_SUB_FS added to make a difference between double and single floats, required for sparc only --- compiler/cgbase.pas | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/compiler/cgbase.pas b/compiler/cgbase.pas index 3f2504865d..9c87f9df35 100644 --- a/compiler/cgbase.pas +++ b/compiler/cgbase.pas @@ -123,7 +123,9 @@ interface R_SUBW, { = 3; 16 bits, Like AX } R_SUBD, { = 4; 32 bits, Like EAX } 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; @@ -463,47 +465,44 @@ implementation function generic_regname(r:tregister):string; var - t,sub : char; - nr : string[12]; + nr : string[12]; begin + str(getsupreg(r),nr); case getregtype(r) of R_INTREGISTER: - t:='i'; + result:='ireg'+nr; R_FPUREGISTER: - t:='f'; - R_MMXREGISTER: - t:='x'; + result:='freg'+nr; R_MMREGISTER: - t:='m'; + result:='mreg'+nr; + R_MMXREGISTER: + result:='xreg'+nr; else begin result:='INVALID'; exit; end; end; - str(getsupreg(r),nr); case getsubreg(r) of R_SUBNONE: - sub:=' '; + ; R_SUBL: - sub:='l'; + result:=result+'l'; R_SUBH: - sub:='h'; + result:=result+'h'; R_SUBW: - sub:='w'; + result:=result+'w'; R_SUBD: - sub:='d'; + result:=result+'d'; R_SUBQ: - sub:='q'; + result:=result+'q'; + R_SUBFS: + result:=result+'fs'; R_SUBFD: - sub:='f'; + result:=result+'fd'; else internalerror(200308252); end; - if sub<>' ' then - result:=t+'reg'+nr+sub - else - result:=t+'reg'+nr; end; @@ -584,7 +583,11 @@ finalization end. { $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 to high problem fixed