]> git.ipfire.org Git - thirdparty/gcc.git/commit
[RS6000] reload_vsx_from_gprsf splitter
authorAlan Modra <amodra@gmail.com>
Thu, 31 Mar 2016 06:26:02 +0000 (16:56 +1030)
committerAlan Modra <amodra@gcc.gnu.org>
Thu, 31 Mar 2016 06:26:02 +0000 (16:56 +1030)
commitd60e6a53fb0a75574558dd447a64e81bf559b498
treee8c43f04e3fdb5a10a866cdaa4eb56baafd6cb87
parent97b7200b914a79589fd36499a4d7996d5a61475c
[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  <amodra@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.

From-SVN: r234609
gcc/ChangeLog
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/vsx.md