On Tue, Mar 01, 2011 at 05:22:15PM -0600, Pat Haugen wrote:
> Are there alternative solutions to this such that we'll use scalar
> FP store/load insns for SF/DF mode spill and vector store/load insns
> for vector spill?
I made a similar fix a while ago in rs6000/e500.h (which your patch
will clash with, BTW, needs an undef somewhere). Going from memory, I
believe you can use something like
#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \
(TARGET_VSX \
&& ((MODE) == VOIDmode || (MODE) == V2DFmode) \
&& FP_REGNO_P (REGNO) \
? V2DFmode \
: choose_hard_reg_mode ((REGNO), (NREGS), false))
This will allocate enough space for the vector regs, but only
save/restore using FP insns if the reg is used in a FP mode.