This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Why high vsr registers [vsr32 - vsr63] are not used when -mvsx is specified on powerpc?
- From: David Edelsohn <dje dot gcc at gmail dot com>
- To: Carrot Wei <carrot at google dot com>
- Cc: GCC Development <gcc at gcc dot gnu dot org>, Michael Meissner <meissner at linux dot vnet dot ibm dot com>
- Date: Wed, 17 Jul 2013 21:01:44 -0400
- Subject: Re: Why high vsr registers [vsr32 - vsr63] are not used when -mvsx is specified on powerpc?
- References: <CAEe8uEBYQYsR_TzRJcOXdYV63-iNYGuPG6q4DYo20awZSDcM-Q at mail dot gmail dot com>
On Wed, Jul 17, 2013 at 7:27 PM, Carrot Wei <carrot@google.com> wrote:
> Hi
>
> When I tried to build 444.namd with options "-O2 -m64 -mvsx
> -mcpu=power7", I can see vsx instructions are actually used, there are
> many xs- started instructions, but none of them use high registers
> [vsr32 -vsr63], does anybody know the reason?
>
> One example is function calc_pair_energy_fullelect in file
> ComputeNonbondedUtil.o, there are many vsr register spilling but high
> vsr registers are never used.
For scalar floating point, not vector floating point, GCC currently
uses only the lower VSRs because the upper registers only allow
indexed addressing modes (register + register) and not displacement
forms. It's one register class with different valid addressing forms
depending on the register number, which is difficult for GCC. We did
not want to disable displacement address form in the initial support.
Mike Meissner currently is working on patches for the PPC backend to
improve this through reload hooks.
Thanks, David