[PATCH RFC] PR 47862: Fix caller-save spill of vectors on PowerPC

Alan Modra amodra@gmail.com
Wed Mar 2 03:06:00 GMT 2011


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.

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Gcc-patches mailing list