[PATCH, rs6000] power8 patches, patch #4 (revised), new power8 builtins

Michael Meissner meissner@linux.vnet.ibm.com
Wed Jun 5 16:13:00 GMT 2013


On Wed, Jun 05, 2013 at 10:28:02AM -0400, David Edelsohn wrote:
> +;; The canonical form is to have the negated elment first, so we need to
> +;; reverse arguments.
> 
> Please fix the typo in the comment: "element".

Ok.  I need to proof-read the patches before sending them out.

> +;; Like VSX_L, but don't support TImode for doing logical instructions in
> +;; 32-bit
> +(define_mode_iterator VSX_L2 [V16QI V8HI V4SI V2DI V4SF V2DF])
> +
>  ;; Iterator for memory move.  Handle TImode specially to allow
>  ;; it to use gprs as well as vsx registers.
>  (define_mode_iterator VSX_M [V16QI V8HI V4SI V2DI V4SF V2DF])
> 
> +(define_mode_iterator VSX_M2 [V16QI
> +                  V8HI
> +                  V4SI
> +                  V2DI
> +                  V4SF
> +                  V2DF
> +                  (TI    "TARGET_VSX_TIMODE")])
> 
> The patch adds new iterators VSX_L2 and VSX_M2.  The original
> ChangeLog only mentioned M2 and the new ChangeLog only mentions L2.
> What's going on?

I thought I had deleted VSX_M2 from this patch.  It will be needed in patch #8
for the fusion peephole.  The difference is VSX_L2 avoids TImode altogether,
and was used by the logical ops to prevent TImode operations in VSX registers
in 32-bit.

The problem is unless we have expanders/splitters for logical DImode, the
compiler when it wants to do a logical DImode operation says, aha I have a
TImode operation, and then it converts the DImode value to TImode, does the
operation (which in turn may mean transfer between GPR and VSX registers).

I can add splitters and such for 32-bit DImode to prevent this, but I don't
know if you want me to do it in the context of this patch, or do it as a later
patch.

> * config/rs6000/rs6000.md (eqv<mode>3): Add support for powerp eqv instruction.
> 
> Why isn't this covered by boolean_operator and %q output operand?  And
> why can't that predicate and output operand handle vsx as well, e.g.,
> *vsx_eqv?  Why don't we simply have vsx_bool<mode>3, etc.

See my reply to Segher that boolc doesn't use the canonical form, so eqv is not
currently generated.

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460, USA
email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797



More information about the Gcc-patches mailing list