Hi!
On Fri, Jun 29, 2018 at 07:38:39AM -0700, Carl Love wrote:
> +;; Unpack high elements of float vector to vector of doubles
> +(define_expand "altivec_unpackh_v4sf"
> + [(set (match_operand:V2DF 0 "register_operand" "=v")
> + (match_operand:V4SF 1 "register_operand" "v"))]
> + "TARGET_VSX"
> +{
> + emit_insn (gen_doublehv4sf2 (operands[0], operands[1]));
> + DONE;
> +}
> + [(set_attr "type" "veccomplex")])
I wondered if these mactually work for all VSX registers, not just the VMX
registers (i.e. "wa" or similar instead of "v"). But constraints in
define_expand are meaningless anyway; just leave them out please.
Does it help to define these altivec_unpackh_v4sf, when all it does is
expand as doublehv4sf2? Can't you more easily put the latter in the tables?
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/powerpc/altivec-1-runnable.c
> @@ -0,0 +1,257 @@
> +/* { dg-do compile { target powerpc*-*-* } } */
> +/* { dg-require-effective-target powerpc_altivec_ok } */
> +/* { dg-options "-mpower8-vector -maltivec" } */
This needs p8vector_ok then. Is that correct? What requires p8?
Is VSX (p7) enough for everything here?
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/powerpc/altivec-2-runnable.c
> @@ -0,0 +1,94 @@
> +/* { dg-do compile { target powerpc*-*-* } } */
> +/* { dg-require-effective-target powerpc_altivec_ok } */
> +/* { dg-options "-mpower8-vector -mvsx" } */
Same here: required target does not match options.
Rest looks fine.
Segher