diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2011-09-23 17:02:10 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2011-09-23 17:02:10 +0000 |
commit | 590245153a345410c79f16df7c58660ff91df05e (patch) | |
tree | 47bbefd4d4c98a4a2fa91ba603f21b74d16907d0 /gcc/config/avr/avr-protos.h | |
parent | d45510814279358307e46c435716843819c6460b (diff) | |
download | gcc-590245153a345410c79f16df7c58660ff91df05e.zip gcc-590245153a345410c79f16df7c58660ff91df05e.tar.gz gcc-590245153a345410c79f16df7c58660ff91df05e.tar.bz2 |
re PR target/50447 ([avr] Better support of AND, OR, XOR and PLUS with constant integers for 16- and 32-bit values)
PR target/50447
* config/avr/avr.md: (adjust_len): Add alternative "out_plus".
(addsi3): Rewrite using QI scratch register. Adjust text
peepholes using plus:SI.
(*addsi3_zero_extend.hi): New insn.
(*subsi3_zero_extend.hi): New insn.
(*subhi3_zero_extend1): Set attribute "cc" to "set_czn".
(*subsi3_zero_extend): Ditto.
(subsi3): Change predicate #2 to register_operand.
* config/avr/avr-protos.h (avr_out_plus): New prototype.
(avr_out_plus_1): New static function.
(avr_out_plus): New function.
(adjust_insn_length): Handle ADJUST_LEN_OUT_PLUS.
From-SVN: r179123
Diffstat (limited to 'gcc/config/avr/avr-protos.h')
-rw-r--r-- | gcc/config/avr/avr-protos.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/config/avr/avr-protos.h b/gcc/config/avr/avr-protos.h index 215fd83..c6673e4 100644 --- a/gcc/config/avr/avr-protos.h +++ b/gcc/config/avr/avr-protos.h @@ -82,6 +82,7 @@ extern void avr_output_bld (rtx operands[], int bit_nr); extern void avr_output_addr_vec_elt (FILE *stream, int value); extern const char *avr_out_sbxx_branch (rtx insn, rtx operands[]); extern const char* avr_out_bitop (rtx, rtx*, int*); +extern const char* avr_out_plus (rtx*, int*); extern bool avr_popcount_each_byte (rtx, int, int); extern int extra_constraint_Q (rtx x); |