summaryrefslogtreecommitdiff
path: root/gcc/config/avr/constraints.md
diff options
context:
space:
mode:
authoraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>2007-05-19 10:59:17 +0000
committeraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>2007-05-19 10:59:17 +0000
commitdf3d6232299393f4c995d54e13ae47611bc8d823 (patch)
treee1afdb336d4a391ac60933901f808c63399b7edb /gcc/config/avr/constraints.md
parentdf68fc4283931e6bb003f53251573066150347f0 (diff)
downloadgcc-df3d6232299393f4c995d54e13ae47611bc8d823.tar.gz
* config/avr/avr-protos.h (expand_prologue, expand_epilogue,
avr_epilogue_uses) : Add declaration. * config/avr/predicates.md (avr_sp_immediate_operand): New predicate. * config/avr/constraints.md (R): New constraint. config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI, UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants. (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ... (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns. (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt, call_prologue_saves, epilogue_restores, return_from_epilogue, return_from_main_epilogue, return_from_interrupt_epilogue, return_from_naked_epilogue, prologue, epilogue): New patterns. (jump): Handle symbol reference. * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr, avr_output_function_prologue, avr_output_function_epilogue): Remove functions. (avr_init_machine_status, expand_prologue, expand_epilogue, avr_asm_function_end_prologue, avr_epilogue_uses, avr_asm_function_begin_epilogue): New functions. (prologue_size, epilogue_size, jump_tables_size): Remove global variables. (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove. (TARGET_ASM_FUNCTION_END_PROLOGUE): Define. (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define. (avr_override_options): Initialise init_machine_status. (output_movhi): Handle all stack pointer loads. (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address. (avr_output_addr_vec_elt): Do not use variable jump_tables_size. * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New. (EPILOGUE_USES) Redefine. (machine_function) Declare. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124854 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/avr/constraints.md')
-rw-r--r--gcc/config/avr/constraints.md5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/config/avr/constraints.md b/gcc/config/avr/constraints.md
index eca5cbef292..f3ff9e962cc 100644
--- a/gcc/config/avr/constraints.md
+++ b/gcc/config/avr/constraints.md
@@ -99,6 +99,11 @@
(and (match_code "const_double")
(match_test "op == CONST0_RTX (SFmode)")))
+(define_constraint "R"
+ "Integer constant in the range -6 @dots{} 5."
+ (and (match_code "const_int")
+ (match_test "ival >= -6 && ival <= 5")))
+
(define_memory_constraint "Q"
"A memory address based on X or Y pointer with displacement."
(and (match_code "mem")