Message ID | 20161130055529.GA15077@ibm-tiger.the-meissners.org |
---|---|
State | New |
Headers | show |
On Wed, Nov 30, 2016 at 12:55:29AM -0500, Michael Meissner wrote: > I have done full bootstraps and make check with no regressions on a little > endian power8 (64-bit only), a big endian power8 (64-bit only), and a big > endian power7 (both 32-bit and 64-bit). Cann I install both patches to the > trunk? Yes please. Thanks, Segher > 2016-11-29 Michael Meissner <meissner@linux.vnet.ibm.com> > > PR target/78602 > * config/rs6000/rs6000.c (rs6000_expand_vector_extract): If the > element is not a constant or in a register, force it to a > register. > > 2016-11-29 Michael Meissner <meissner@linux.vnet.ibm.com> > > PR target/78560 > * config/rs6000/rs6000.c (rs6000_expand_vector_set): Force value > that will be set to a vector element to be in a register. > * config/rs6000/vsx.md (vsx_set_<mode>_p9): Fix thinko that used > the wrong multiplier to convert the element number to a byte > offset.
Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 242972) +++ gcc/config/rs6000/rs6000.c (revision 242973) @@ -7257,6 +7257,8 @@ rs6000_expand_vector_extract (rtx target convert_move (tmp, elt, 0); elt = tmp; } + else if (!REG_P (elt)) + elt = force_reg (DImode, elt); switch (mode) {