On 08/03/2016 11:33 PM, Michael Meissner wrote: > { > - if (BYTES_BIG_ENDIAN) > - return "xxpermdi %x0,%x1,%x2,0"; > + if (which_alternative == 0) > + return (BYTES_BIG_ENDIAN > + ? "xxpermdi %x0,%x1,%x2,0" > + : "xxpermdi %x0,%x2,%x1,0"); > + > + else if (which_alternative == 1) > + return (BYTES_BIG_ENDIAN > + ? "mtvsrdd %x0,%1,%2" > + : "mtvsrdd %x0,%2,%1"); > + > else > - return "xxpermdi %x0,%x2,%x1,0"; > + gcc_unreachable (); > } > - [(set_attr "type" "vecperm")]) > + [(set_attr "type" "vecperm,mftgpr") > + (set_attr "length" "4")])
mtvsrdd actually behaves like a permute, so vecperm would be best insn type for it. -Pat