Wow, that's pretty bad; obviously a pasto. Thanks for pointing it out! I'm really surprised this has survived this long, but that may be a comment on how much lvxl is used. I'll get this fixed asap.
Thanks, Bill On Tue, 2016-02-09 at 18:25 +0100, Ulrich Weigand wrote: > 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 >