From 3717616ba7118e1ff8166024e819bba5cd3fca0c Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 3 Aug 2016 10:00:04 +0930 Subject: [PATCH] [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 --- gcc/ChangeLog | 5 ++++ gcc/config/rs6000/rs6000.c | 58 +++++++++++--------------------------- 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 + + * config/rs6000/rs6000.c (rs6000_secondary_reload_direct_move): + Delete duplicated code. + 2016-08-02 Vladimir Makarov 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 -- 2.30.2