diff options
author | Alan Modra <amodra@gmail.com> | 2016-08-03 10:05:14 +0930 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2016-08-03 10:05:14 +0930 |
commit | cef58349a086b8294d14514c37fbacdf44395d18 (patch) | |
tree | fe32ca16242d64026f5b1384c7e000a4c3057333 | |
parent | d1f0a70a1284af293bbd95e31cdbeb8ac6db9885 (diff) | |
download | gcc-cef58349a086b8294d14514c37fbacdf44395d18.zip gcc-cef58349a086b8294d14514c37fbacdf44395d18.tar.gz gcc-cef58349a086b8294d14514c37fbacdf44395d18.tar.bz2 |
[RS6000] cost SLOW_UNALIGNED_ACCESS
* config/rs6000/rs6000.c (rs6000_rtx_costs): Make unaligned mem
cost more.
From-SVN: r239012
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a75f39f..e8de5b9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2016-08-03 Alan Modra <amodra@gmail.com> + * config/rs6000/rs6000.c (rs6000_rtx_costs): Make unaligned mem + cost more. + +2016-08-03 Alan Modra <amodra@gmail.com> + * config/rs6000/rs6000.md (fix_trunc<mode>si2): Force source operand to a reg. Localize vars. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 5b9aae2..2ae3e7e 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -34336,11 +34336,16 @@ rs6000_rtx_costs (rtx x, machine_mode mode, int outer_code, case CONST: case HIGH: case SYMBOL_REF: + *total = !speed ? COSTS_N_INSNS (1) + 1 : COSTS_N_INSNS (2); + return true; + case MEM: /* When optimizing for size, MEM should be slightly more expensive than generating address, e.g., (plus (reg) (const)). L1 cache latency is about two instructions. */ *total = !speed ? COSTS_N_INSNS (1) + 1 : COSTS_N_INSNS (2); + if (SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (x))) + *total += COSTS_N_INSNS (100); return true; case LABEL_REF: |