diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2010-04-06 20:18:42 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2010-04-06 20:18:42 +0200 |
commit | d079b87fab5e8de93c897940b750286d31d5d003 (patch) | |
tree | 63fdad1fa0b970340be7cdd0dec1efa5a59642e2 /gcc/config/i386/sync.md | |
parent | be59db2d47d5de2c73132b9ea45bdfa7692a4bd8 (diff) | |
download | gcc-d079b87fab5e8de93c897940b750286d31d5d003.zip gcc-d079b87fab5e8de93c897940b750286d31d5d003.tar.gz gcc-d079b87fab5e8de93c897940b750286d31d5d003.tar.bz2 |
i386-protos.h (x86_maybe_negate_const_int): Declare.
* config/i386/i386-protos.h (x86_maybe_negate_const_int): Declare.
* config/i386/i386.c (x86_maybe_negate_const_int): New.
(x86_output_mi_thunk): Use x86_maybe_negate_const_int.
* config/i386/i386.md (*add<mode>_1, *addsi_1_zext, *addhi_1,
*addhi_1_lea, *addqi_1, *addqi_1_lea, *addqi_1_slp, *add<mode>_2,
*addsi_2_zext, *addhi_2, *addqi_2, *add<mode>_3, *addsi_3_zext,
*addhi_3, *addqi_3,*add<mode>_5, *addhi_5, *addqi_5):
Use x86_maybe_negate_const_int to output insn mnemonic.
(*adddi_4, *addsi_4, *addhi_4, *addqi_4): Ditto. Remove overflow
check from instruction predicate. Update comments.
* config/i386/sync.md (sync_add<mode>): Use
x86_maybe_negate_const_int to output insn mnemonic.
From-SVN: r158013
Diffstat (limited to 'gcc/config/i386/sync.md')
-rw-r--r-- | gcc/config/i386/sync.md | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md index 0df85c7..feea161 100644 --- a/gcc/config/i386/sync.md +++ b/gcc/config/i386/sync.md @@ -202,6 +202,9 @@ return "lock{%;| }dec{<imodesuffix>}\t%0"; } + if (x86_maybe_negate_const_int (&operands[1], <MODE>mode)) + return "lock{%;| }sub{<imodesuffix>}\t{%1, %0|%0, %1}"; + return "lock{%;| }add{<imodesuffix>}\t{%1, %0|%0, %1}"; }) |