From: <sv...@va...> - 2009-12-29 14:38:04
|
Author: sewardj Date: 2009-12-29 14:37:50 +0000 (Tue, 29 Dec 2009) New Revision: 1946 Log: Comment-only change: update comments w.r.t. register classes and spill slot sizes. Modified: branches/ARM/priv/host_generic_reg_alloc2.c branches/ARM/priv/host_generic_regs.h Modified: branches/ARM/priv/host_generic_reg_alloc2.c =================================================================== --- branches/ARM/priv/host_generic_reg_alloc2.c 2009-12-29 14:21:22 UTC (rev 1945) +++ branches/ARM/priv/host_generic_reg_alloc2.c 2009-12-29 14:37:50 UTC (rev 1946) @@ -832,7 +832,7 @@ } /* The spill slots are 64 bits in size. As per the comment on - definition of HRegClass in h_generic_regs.h, that means, to + definition of HRegClass in host_generic_regs.h, that means, to spill a vreg of class Flt64 or Vec128, we'll need to find two adjacent spill slots to use. Note, this logic needs to kept in sync with the size info on the definition of HRegClass. */ Modified: branches/ARM/priv/host_generic_regs.h =================================================================== --- branches/ARM/priv/host_generic_regs.h 2009-12-29 14:21:22 UTC (rev 1945) +++ branches/ARM/priv/host_generic_regs.h 2009-12-29 14:37:50 UTC (rev 1946) @@ -74,9 +74,9 @@ Note further that since the class field is never 1111b, no valid register can have the value INVALID_HREG. - There are currently 5 register classes: + There are currently 6 register classes: - int32 int64 float64 simd64 simd128 + int32 int64 float32 float64 simd64 simd128 */ typedef UInt HReg; @@ -87,18 +87,20 @@ available on any specific host. For example on x86, the available classes are: Int32, Flt64, Vec128 only. - IMPORTANT NOTE: reg_alloc2.c needs how much space is needed to spill - each class of register. It has the following knowledge hardwired in: + IMPORTANT NOTE: host_generic_reg_alloc2.c needs how much space is + needed to spill each class of register. It allocates the following + amount of space: - HRcInt32 32 bits + HRcInt32 64 bits HRcInt64 64 bits - HRcFlt32 ?? bits - HRcFlt64 80 bits (on x86 these are spilled by fstpt/fldt) + HRcFlt32 64 bits + HRcFlt64 128 bits (on x86 these are spilled by fstpt/fldt and + so won't fit in a 64-bit slot) HRcVec64 64 bits HRcVec128 128 bits If you add another regclass, you must remember to update - reg_alloc2.c accordingly. + host_generic_reg_alloc2.c accordingly. */ typedef enum { |