c4x.h (HARD_REGNO_NREGS): HCmode mode uses 2 regs not 4.
authorHerman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
Sat, 7 Apr 2001 01:17:57 +0000 (03:17 +0200)
committerMichael Hayes <m.hayes@gcc.gnu.org>
Sat, 7 Apr 2001 01:17:57 +0000 (01:17 +0000)
2001-04-07  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

* c4x.h (HARD_REGNO_NREGS): HCmode mode uses 2 regs not 4.

From-SVN: r41173

gcc/ChangeLog
gcc/config/c4x/c4x.h

index 760778157fd90410a1247a572eb57d9977b91543..c987bbe04e4264dae97d82b820a13743dd317c9a 100644 (file)
@@ -1,3 +1,7 @@
+2001-04-07  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
+
+       * c4x.h (HARD_REGNO_NREGS): HCmode mode uses 2 regs not 4.
+
 2001-04-06  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * cpplib.c (cpp_push_buffer): Give stdin buffers the name <stdin>.
index 72155650c9873e1f3ab9baeaddd8d90474ba2ca3..3f351e37174a7fa398edfb87f04513bb4a749a92 100644 (file)
@@ -630,12 +630,16 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string;
 
 #define CLASS_LIKELY_SPILLED_P(CLASS) ((CLASS) == INDEX_REGS)
 
-/* CCmode is wrongly defined in machmode.def  It should have a size
-   of UNITS_PER_WORD.  */
+/* CCmode is wrongly defined in machmode.def.  It should have a size
+   of UNITS_PER_WORD.  HFmode is 40-bits and thus fits within a single
+   extended precision register.  Similarly, HCmode fits within two
+   extended precision registers.  */
 
 #define HARD_REGNO_NREGS(REGNO, MODE)                          \
-(((MODE) == CCmode || (MODE) == CC_NOOVmode) ? 1 : ((MODE) == HFmode) ? 1 : \
-((GET_MODE_SIZE(MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
+(((MODE) == CCmode || (MODE) == CC_NOOVmode) ? 1 : \
+ ((MODE) == HFmode) ? 1 : \
+ ((MODE) == HCmode) ? 2 : \
+ ((GET_MODE_SIZE(MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
 
 
 /* A C expression that is nonzero if the hard register REGNO is preserved