diff options
author | Alan Modra <amodra@gmail.com> | 2016-08-03 10:00:04 +0930 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2016-08-03 10:00:04 +0930 |
commit | 3717616ba7118e1ff8166024e819bba5cd3fca0c (patch) | |
tree | 31559ee5ba1d145216e7285eb72c43cb372af643 | |
parent | 749f7c4466054c1a9c6a37e324abcd21b2fdbf9d (diff) | |
download | gcc-3717616ba7118e1ff8166024e819bba5cd3fca0c.zip gcc-3717616ba7118e1ff8166024e819bba5cd3fca0c.tar.gz gcc-3717616ba7118e1ff8166024e819bba5cd3fca0c.tar.bz2 |
[RS6000] Delete duplicate code
This removes the duplicate (TARGET_POWERPC64 && size == 16) block.
* config/rs6000/rs6000.c (rs6000_secondary_reload_direct_move):
Delete duplicated code.
From-SVN: r239009
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 58 |
2 files changed, 22 insertions, 41 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bec2824..fc1fe6a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-08-03 Alan Modra <amodra@gmail.com> + + * config/rs6000/rs6000.c (rs6000_secondary_reload_direct_move): + Delete duplicated code. + 2016-08-02 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/72778 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index c16863d..5b9aae2 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -19599,50 +19599,11 @@ rs6000_secondary_reload_direct_move (enum rs6000_reg_type to_type, int cost = 0; int size = GET_MODE_SIZE (mode); - if (TARGET_POWERPC64) - { - if (size == 16) - { - /* Handle moving 128-bit values from GPRs to VSX point registers on - ISA 2.07 (power8, power9) when running in 64-bit mode using - XXPERMDI to glue the two 64-bit values back together. */ - if (to_type == VSX_REG_TYPE && from_type == GPR_REG_TYPE) - { - cost = 3; /* 2 mtvsrd's, 1 xxpermdi. */ - icode = reg_addr[mode].reload_vsx_gpr; - } - - /* Handle moving 128-bit values from VSX point registers to GPRs on - ISA 2.07 when running in 64-bit mode using XXPERMDI to get access to the - bottom 64-bit value. */ - else if (to_type == GPR_REG_TYPE && from_type == VSX_REG_TYPE) - { - cost = 3; /* 2 mfvsrd's, 1 xxpermdi. */ - icode = reg_addr[mode].reload_gpr_vsx; - } - } - - else if (mode == SFmode) - { - if (to_type == GPR_REG_TYPE && from_type == VSX_REG_TYPE) - { - cost = 3; /* xscvdpspn, mfvsrd, and. */ - icode = reg_addr[mode].reload_gpr_vsx; - } - - else if (to_type == VSX_REG_TYPE && from_type == GPR_REG_TYPE) - { - cost = 2; /* mtvsrz, xscvspdpn. */ - icode = reg_addr[mode].reload_vsx_gpr; - } - } - } - if (TARGET_POWERPC64 && size == 16) { /* Handle moving 128-bit values from GPRs to VSX point registers on - ISA 2.07 when running in 64-bit mode using XXPERMDI to glue the two - 64-bit values back together. */ + ISA 2.07 (power8, power9) when running in 64-bit mode using + XXPERMDI to glue the two 64-bit values back together. */ if (to_type == VSX_REG_TYPE && from_type == GPR_REG_TYPE) { cost = 3; /* 2 mtvsrd's, 1 xxpermdi. */ @@ -19659,6 +19620,21 @@ rs6000_secondary_reload_direct_move (enum rs6000_reg_type to_type, } } + else if (TARGET_POWERPC64 && mode == SFmode) + { + if (to_type == GPR_REG_TYPE && from_type == VSX_REG_TYPE) + { + cost = 3; /* xscvdpspn, mfvsrd, and. */ + icode = reg_addr[mode].reload_gpr_vsx; + } + + else if (to_type == VSX_REG_TYPE && from_type == GPR_REG_TYPE) + { + cost = 2; /* mtvsrz, xscvspdpn. */ + icode = reg_addr[mode].reload_vsx_gpr; + } + } + else if (!TARGET_POWERPC64 && size == 8) { /* Handle moving 64-bit values from GPRs to floating point registers on |