diff options
author | ams <ams@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-04-20 16:33:48 +0000 |
---|---|---|
committer | ams <ams@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-04-20 16:33:48 +0000 |
commit | 72a26e190b6ad7fbdeb888b37a051d27d031d67d (patch) | |
tree | dca58fc9061409434781efead0cd1fff82b041e4 | |
parent | 6cfb1e41729ae2caa6193f13ad92a1933a7cdc70 (diff) | |
download | gcc-72a26e190b6ad7fbdeb888b37a051d27d031d67d.tar.gz |
2011-04-20 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/arm/arm.c (arm_gen_constant): Move movw support ....
(const_ok_for_op): ... to here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@172777 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 20 |
2 files changed, 13 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cdb4d3ba496..455bfeb58bc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-04-20 Andrew Stubbs <ams@codesourcery.com> + + * config/arm/arm.c (arm_gen_constant): Move movw support .... + (const_ok_for_op): ... to here. + 2011-04-20 Kai Tietz <ktietz@redhat.com> * fold-const.c (fold_binary_loc): Add handling for diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 83bb65b38c3..38aa390ab6e 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -2307,6 +2307,13 @@ const_ok_for_op (HOST_WIDE_INT i, enum rtx_code code) switch (code) { + case SET: + /* See if we can use movw. */ + if (arm_arch_thumb2 && (i & 0xffff0000) == 0) + return 1; + else + return 0; + case PLUS: case COMPARE: case EQ: @@ -2663,9 +2670,7 @@ arm_gen_constant (enum rtx_code code, enum machine_mode mode, rtx cond, } /* If we can do it in one insn get out quickly. */ - if (const_ok_for_arm (val) - || (can_negate_initial && const_ok_for_arm (-val)) - || (can_invert && const_ok_for_arm (~val))) + if (const_ok_for_op (val, code)) { if (generate) emit_constant_insn (cond, @@ -2718,15 +2723,6 @@ arm_gen_constant (enum rtx_code code, enum machine_mode mode, rtx cond, switch (code) { case SET: - /* See if we can use movw. */ - if (arm_arch_thumb2 && (remainder & 0xffff0000) == 0) - { - if (generate) - emit_constant_insn (cond, gen_rtx_SET (VOIDmode, target, - GEN_INT (val))); - return 1; - } - /* See if we can do this by sign_extending a constant that is known to be negative. This is a good, way of doing it, since the shift may well merge into a subsequent insn. */ |