https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973
--- Comment #22 from Alan Modra <amodra at gcc dot gnu.org> --- Author: amodra Date: Thu Mar 31 06:26:02 2016 New Revision: 234609 URL: https://gcc.gnu.org/viewcvs?rev=234609&root=gcc&view=rev Log: [RS6000] reload_vsx_from_gprsf splitter This is PR68973 part 2, caused by the reload_vsx_from_gprsf splitter emitting an invalid move. Part 1 deferred for branch until it is proven that the reload change is necessary. Backport from mainline 2016-02-16 Alan Modra <amo...@gmail.com> PR target/68973 * config/rs6000/rs6000.md (reload_vsx_from_gprsf): Rewrite splitter. (p8_mtvsrd_df, p8_mtvsrd_sf): New. (p8_mtvsrd_1, p8_mtvsrd_2): Delete. (p8_mtvsrwz): New. (p8_mtvsrwz_1, p8_mtvsrwz_2): Delete. (p8_xxpermdi_<mode>): Take two DF inputs rather than one TF. (p8_fmrgow_<mode>): Likewise. (reload_vsx_from_gpr<mode>): Adjust for above. Use "wa" for clobber constraint. (reload_fpr_from_gpr<mode>): Adjust for above. Use "d" for op0 constraint. (reload_vsx_from_gprsf): Use p8_mtvsrd_sf rather than attempting to use movdi_internal64. Remove op0_di. * config/rs6000/vsx.md (vsx_xscvspdpn_directmove): Make op1 SFmode. Modified: branches/gcc-4_9-branch/gcc/ChangeLog branches/gcc-4_9-branch/gcc/config/rs6000/rs6000.md branches/gcc-4_9-branch/gcc/config/rs6000/vsx.md