summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>2016-08-03 00:30:04 +0000
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>2016-08-03 00:30:04 +0000
commitfa9f0b452e469da06ff6055647f36125cfe03cea (patch)
tree31559ee5ba1d145216e7285eb72c43cb372af643
parent34dbd818626ae1f519d07363f62c0c23ee294b98 (diff)
downloadgcc-fa9f0b452e469da06ff6055647f36125cfe03cea.tar.gz
[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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239009 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.c58
2 files changed, 22 insertions, 41 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bec28247100..fc1fe6af959 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 c16863d0ad6..5b9aae27681 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