This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH], Add PowerPC ISA 3.0 vector d-form addressing
- From: Segher Boessenkool <segher at kernel dot crashing dot org>
- To: Michael Meissner <meissner at linux dot vnet dot ibm dot com>, gcc-patches at gcc dot gnu dot org, David Edelsohn <dje dot gcc at gmail dot com>, Bill Schmidt <wschmidt at linux dot vnet dot ibm dot com>
- Date: Wed, 4 May 2016 11:16:52 -0500
- Subject: Re: [PATCH], Add PowerPC ISA 3.0 vector d-form addressing
- Authentication-results: sourceware.org; auth=none
- References: <20160503223955 dot GA12329 at ibm-tiger dot the-meissners dot org>
Hi Mike,
On Tue, May 03, 2016 at 06:39:55PM -0400, Michael Meissner wrote:
> With this patch, I enable -mlra if the user did not specify either -mlra or
> -mno-lra on the command line, and -mcpu=power9 or -mpower9-dform-vector were
> used. I also enabled -mvsx-timode if LRA was used, which also is a RELOAD
> issue, that works with LRA.
I don't like enabling LRA if the user didn't ask for it; it is a bit too
surprising. What do you do if there is -mno-lra explicitly? You can just
do the same if no-lra is implicit?
> * doc/md.texi (wO constraint): Likewise.
Everything is "likewise", that isn't very helpful. Writing big changelogs
is annoying, I totally agree, but please try a bit harder.
> --- gcc/config/rs6000/rs6000.opt (.../svn+ssh://meissner@gcc.gnu.org/svn/gcc/trunk/gcc/config/rs6000) (revision 235831)
> +++ gcc/config/rs6000/rs6000.opt (.../gcc/config/rs6000) (working copy)
> @@ -470,8 +470,8 @@ Target RejectNegative Joined UInteger Va
> -mlong-double-<n> Specify size of long double (64 or 128 bits).
>
> mlra
> -Target Report Var(rs6000_lra_flag) Init(0) Save
> -Use LRA instead of reload.
> +Target Undocumented Mask(LRA) Var(rs6000_isa_flags)
> +Use the LRA register allocator instead of the reload register allocator.
It wasn't "undocumented" before? Why the change to a mask bit btw?
> +mpower9-dform-scalar
> +Target Report Mask(P9_DFORM_SCALAR) Var(rs6000_isa_flags)
> +Use/do not use scalar register+offset memory instructions added in ISA 3.0.
> +
> +mpower9-dform-vector
> +Target Report Mask(P9_DFORM_VECTOR) Var(rs6000_isa_flags)
> +Use/do not use vector register+offset memory instructions added in ISA 3.0.
> +
> mpower9-dform
> -Target Undocumented Mask(P9_DFORM) Var(rs6000_isa_flags)
> -Use/do not use vector and scalar instructions added in ISA 3.0.
> +Target Report Var(TARGET_P9_DFORM_BOTH) Init(-1) Save
> +Use/do not use register+offset memory instructions added in ISA 3.0.
These should probably all be undocumented, though (they're not something
users should use).
> +/* Return true if the ADDR is an acceptiable address for a quad memory
^ spelling
> + if (((addr_mask & RELOAD_REG_QUAD_OFFSET) == 0)
> + || !quad_address_p (addr, mode, false))
You can lose some parens here, i.e.
+ if ((addr_mask & RELOAD_REG_QUAD_OFFSET) == 0
+ || !quad_address_p (addr, mode, false))
Segher