aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPat Haugen <pthaugen@us.ibm.com>2008-04-22 19:28:56 +0000
committerPat Haugen <pthaugen@gcc.gnu.org>2008-04-22 19:28:56 +0000
commitaafc759a8a4e404469bf39a92bb10522baf4a281 (patch)
tree844d4181de7bd4105f283a45c12619969dfc5e2f /gcc
parent28f68625537daa396681d2b5bc5f5ada52d5853d (diff)
downloadgcc-aafc759a8a4e404469bf39a92bb10522baf4a281.zip
gcc-aafc759a8a4e404469bf39a92bb10522baf4a281.tar.gz
gcc-aafc759a8a4e404469bf39a92bb10522baf4a281.tar.bz2
rs6000.c (rs6000_register_move_cost): Increase cost of LR/CTR moves for Power6.
* config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost of LR/CTR moves for Power6. From-SVN: r134565
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8127c33..761cf7f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2008-04-22 Pat Haugen <pthaugen@us.ibm.com>
+
+ * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
+ of LR/CTR moves for Power6.
+
2008-04-22 Kenneth Zadeck <zadeck@naturalbridge.com>
PR middle-end/36003
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 024c140..6ac9ee1 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -21331,6 +21331,12 @@ rs6000_register_move_cost (enum machine_mode mode,
else if (from == CR_REGS)
return 4;
+ /* Power6 has slower LR/CTR moves so make them more expensive than
+ memory in order to bias spills to memory .*/
+ else if (rs6000_cpu == PROCESSOR_POWER6
+ && reg_classes_intersect_p (from, LINK_OR_CTR_REGS))
+ return 6 * hard_regno_nregs[0][mode];
+
else
/* A move will cost one instruction per GPR moved. */
return 2 * hard_regno_nregs[0][mode];