Hi Bill,

> 2014-02-20  Bill Schmidt  <wschm...@linux.vnet.ibm.com>
> 
>       * config/rs6000/altivec.md (altivec_lvxl): Rename as
>       *altivec_lvxl_<mode>_internal and use VM2 iterator instead of
>       V4SI.
>       (altivec_lvxl_<mode>): New define_expand incorporating
>       -maltivec=be semantics where needed.

I just noticed that this:

> -(define_insn "altivec_lvxl"
> +(define_expand "altivec_lvxl_<mode>"
>    [(parallel
> -    [(set (match_operand:V4SI 0 "register_operand" "=v")
> -       (match_operand:V4SI 1 "memory_operand" "Z"))
> +    [(set (match_operand:VM2 0 "register_operand" "=v")
> +       (match_operand:VM2 1 "memory_operand" "Z"))
>       (unspec [(const_int 0)] UNSPEC_SET_VSCR)])]
>    "TARGET_ALTIVEC"
> -  "lvxl %0,%y1"
> +{
> +  if (!BYTES_BIG_ENDIAN && VECTOR_ELT_ORDER_BIG)
> +    {
> +      altivec_expand_lvx_be (operands[0], operands[1], <MODE>mode, 
> UNSPEC_SET_VSCR);
> +      DONE;
> +    }
> +})
> +
> +(define_insn "*altivec_lvxl_<mode>_internal"
> +  [(parallel
> +    [(set (match_operand:VM2 0 "register_operand" "=v")
> +       (match_operand:VM2 1 "memory_operand" "Z"))
> +     (unspec [(const_int 0)] UNSPEC_SET_VSCR)])]
> +  "TARGET_ALTIVEC"
> +  "lvx %0,%y1"
>    [(set_attr "type" "vecload")])

now causes vec_ldl to emit the lvx instead of the lvxl instruction.
I assume this was not actually intended?

Bye,
Ulrich

-- 
  Dr. Ulrich Weigand
  GNU/Linux compilers and toolchain
  ulrich.weig...@de.ibm.com

Reply via email to