diff options
author | Joern Rennecke <joern.rennecke@embecosm.com> | 2014-04-11 18:29:30 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2014-04-11 19:29:30 +0100 |
commit | b5d0ecea7981806ffb1277f3087b242104722d36 (patch) | |
tree | a81e60300f3723695c12ae7ea4ce883b56af7835 /gcc | |
parent | 2a55e33d2587f7da8f3b20f69178f2300ce47369 (diff) | |
download | gcc-b5d0ecea7981806ffb1277f3087b242104722d36.zip gcc-b5d0ecea7981806ffb1277f3087b242104722d36.tar.gz gcc-b5d0ecea7981806ffb1277f3087b242104722d36.tar.bz2 |
epiphany.c (epiphany_rtx_cost): Compare with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for its operands.
gcc:
* config/epiphany/epiphany.c (epiphany_rtx_cost): Compare
with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for
its operands.
gcc/testsuite:
* gcc.target/epiphany/btst-1.c: New test.
From-SVN: r209319
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/epiphany/epiphany.c | 13 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/epiphany/btst-1.c | 11 |
4 files changed, 34 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 32ed05f..a9ecf69 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2014-04-11 Joern Rennecke <joern.rennecke@embecosm.com> + * config/epiphany/epiphany.c (epiphany_rtx_cost): Compare + with CC_N_NE / CC_C_LTU / CC_C_GTU carries no extra cost for + its operands. + +2014-04-11 Joern Rennecke <joern.rennecke@embecosm.com> + PR rtl-optimization/60651 * mode-switching.c (optimize_mode_switching): Make sure to emit sets of a lower numbered entity before sets of a higher numbered diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c index 59b2410..8e45ea7 100644 --- a/gcc/config/epiphany/epiphany.c +++ b/gcc/config/epiphany/epiphany.c @@ -763,6 +763,19 @@ epiphany_rtx_costs (rtx x, int code, int outer_code, int opno ATTRIBUTE_UNUSED, *total = COSTS_N_INSNS (1); return true; + case COMPARE: + switch (GET_MODE (x)) + { + /* There are a number of single-insn combiner patterns that use + the flag side effects of arithmetic. */ + case CC_N_NEmode: + case CC_C_LTUmode: + case CC_C_GTUmode: + return true; + default: + return false; + } + default: return false; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e7f800a..9c3c3e4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2014-04-11 Joern Rennecke <joern.rennecke@embecosm.com> + * gcc.target/epiphany/btst-1.c: New test. + +2014-04-11 Joern Rennecke <joern.rennecke@embecosm.com> + PR rtl-optimization/60651 * gcc.target/epiphany/mode-switch.c: New test. diff --git a/gcc/testsuite/gcc.target/epiphany/btst-1.c b/gcc/testsuite/gcc.target/epiphany/btst-1.c new file mode 100644 index 0000000..b5667cc --- /dev/null +++ b/gcc/testsuite/gcc.target/epiphany/btst-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fno-common" } */ +/* { dg-final { scan-assembler-not "movt" } } */ +/* { dg-final { scan-assembler-not "and" } } */ +/* { dg-final { scan-assembler "lsl" } } */ + +int +tst (int i) +{ + return (i & (1<<21)) ? 6 : 9; +} |