On Sun, Jul 30, 2017 at 09:00:58AM -0500, Bill Schmidt wrote: > >> (define_insn "vsx_concat_<mode>" > >> - [(set (match_operand:VSX_D 0 "gpc_reg_operand" "=<VSa>,we") > >> + [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa,we") > >> (vec_concat:VSX_D > >> - (match_operand:<VS_scalar> 1 "gpc_reg_operand" "<VS_64reg>,b") > >> - (match_operand:<VS_scalar> 2 "gpc_reg_operand" "<VS_64reg>,b")))] > >> + (match_operand:<VS_scalar> 1 "gpc_reg_operand" "wa,b") > >> + (match_operand:<VS_scalar> 2 "gpc_reg_operand" "wa,b")))] > >> "VECTOR_MEM_VSX_P (<MODE>mode)" > >> { > >> if (which_alternative == 0) > >> - return (BYTES_BIG_ENDIAN > >> - ? "xxpermdi %x0,%x1,%x2,0" > >> - : "xxpermdi %x0,%x2,%x1,0"); > >> + return rs6000_emit_xxpermdi (operands, NULL_RTX, NULL_RTX); > >> > >> else if (which_alternative == 1) > >> - return (BYTES_BIG_ENDIAN > >> + return (VECTOR_ELT_ORDER_BIG > >> ? "mtvsrdd %x0,%1,%2" > >> : "mtvsrdd %x0,%2,%1"); > > > > This one could be > > > > { > > if (!BYTES_BIG_ENDIAN) > > !VECTOR_ELT_ORDER_BIG (to accommodate -maltivec=be). (We have some general > bitrot associated with -maltivec=be that needs to be addressed, or we need to > give up on it altogether. Still of two minds about this.) > > Bill
In this case, I believe I tested -maltivec=be, and BYTES_BIG_ENDIAN is correct (I originally had it using VECTOR_ELT_ORDER_BIG and got failures). But I need to look at it again. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797