mirror of git://gcc.gnu.org/git/gcc.git
[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
This commit is contained in:
parent
749f7c4466
commit
3717616ba7
|
|
@ -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>
|
2016-08-02 Vladimir Makarov <vmakarov@redhat.com>
|
||||||
|
|
||||||
PR middle-end/72778
|
PR middle-end/72778
|
||||||
|
|
|
||||||
|
|
@ -19599,50 +19599,11 @@ rs6000_secondary_reload_direct_move (enum rs6000_reg_type to_type,
|
||||||
int cost = 0;
|
int cost = 0;
|
||||||
int size = GET_MODE_SIZE (mode);
|
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)
|
if (TARGET_POWERPC64 && size == 16)
|
||||||
{
|
{
|
||||||
/* Handle moving 128-bit values from GPRs to VSX point registers on
|
/* 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
|
ISA 2.07 (power8, power9) when running in 64-bit mode using
|
||||||
64-bit values back together. */
|
XXPERMDI to glue the two 64-bit values back together. */
|
||||||
if (to_type == VSX_REG_TYPE && from_type == GPR_REG_TYPE)
|
if (to_type == VSX_REG_TYPE && from_type == GPR_REG_TYPE)
|
||||||
{
|
{
|
||||||
cost = 3; /* 2 mtvsrd's, 1 xxpermdi. */
|
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)
|
else if (!TARGET_POWERPC64 && size == 8)
|
||||||
{
|
{
|
||||||
/* Handle moving 64-bit values from GPRs to floating point registers on
|
/* Handle moving 64-bit values from GPRs to floating point registers on
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue