]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/avr/avr-protos.h
Update Copyright years for files modified in 2011 and/or 2012.
[thirdparty/gcc.git] / gcc / config / avr / avr-protos.h
CommitLineData
a28e4651 1/* Prototypes for exported functions defined in avr.c
2
73475e84 3 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010,
71e45bc2 4 2011, 2012
164f5b34 5 Free Software Foundation, Inc.
947dd720 6 Contributed by Denis Chertykov (chertykov@gmail.com)
a28e4651 7
187b36cf 8 This file is part of GCC.
a28e4651 9
187b36cf 10 GCC is free software; you can redistribute it and/or modify
a28e4651 11 it under the terms of the GNU General Public License as published by
038d1e19 12 the Free Software Foundation; either version 3, or (at your option)
a28e4651 13 any later version.
14
187b36cf 15 GCC is distributed in the hope that it will be useful,
a28e4651 16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
038d1e19 21 along with GCC; see the file COPYING3. If not see
22 <http://www.gnu.org/licenses/>. */
a28e4651 23
24
206a5129 25extern int function_arg_regno_p (int r);
00abffbf 26extern void avr_cpu_cpp_builtins (struct cpp_reader * pfile);
206a5129 27extern enum reg_class avr_regno_reg_class (int r);
206a5129 28extern void asm_globalize_label (FILE *file, const char *name);
29extern void order_regs_for_local_alloc (void);
ebdd0478 30extern int avr_initial_elimination_offset (int from, int to);
206a5129 31extern int avr_simple_epilogue (void);
afe7695c 32extern int avr_hard_regno_rename_ok (unsigned int, unsigned int);
36f949a2 33extern rtx avr_return_addr_rtx (int count, rtx tem);
4202ef11 34extern void avr_register_target_pragmas (void);
5bd39e93 35extern void avr_init_expanders (void);
e511e253 36
206a5129 37#ifdef TREE_CODE
7c2339f8 38extern void avr_asm_output_aligned_decl_common (FILE*, const_tree, const char*, unsigned HOST_WIDE_INT, unsigned int, bool);
206a5129 39extern void asm_output_external (FILE *file, tree decl, char *name);
148b2ce0 40extern int avr_progmem_p (tree decl, tree attributes);
e511e253 41
a28e4651 42#ifdef RTX_CODE /* inside TREE_CODE */
206a5129 43extern void init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype,
44 rtx libname, tree fndecl);
a28e4651 45#endif /* RTX_CODE inside TREE_CODE */
46
a28e4651 47#endif /* TREE_CODE */
48
49#ifdef RTX_CODE
f55cb01e 50extern int avr_hard_regno_call_part_clobbered (unsigned, enum machine_mode);
206a5129 51extern const char *output_movqi (rtx insn, rtx operands[], int *l);
52extern const char *output_movhi (rtx insn, rtx operands[], int *l);
28913f6b 53extern const char *output_movsisf (rtx insn, rtx operands[], int *l);
dfd52f2b 54extern const char *avr_out_tstsi (rtx, rtx*, int*);
55extern const char *avr_out_tsthi (rtx, rtx*, int*);
02d9a2c3 56extern const char *avr_out_tstpsi (rtx, rtx*, int*);
dfd52f2b 57extern const char *avr_out_compare (rtx, rtx*, int*);
83921eda 58extern const char *avr_out_compare64 (rtx, rtx*, int*);
206a5129 59extern const char *ret_cond_branch (rtx x, int len, int reverse);
02d9a2c3 60extern const char *avr_out_movpsi (rtx, rtx*, int*);
206a5129 61
62extern const char *ashlqi3_out (rtx insn, rtx operands[], int *len);
63extern const char *ashlhi3_out (rtx insn, rtx operands[], int *len);
64extern const char *ashlsi3_out (rtx insn, rtx operands[], int *len);
65
66extern const char *ashrqi3_out (rtx insn, rtx operands[], int *len);
67extern const char *ashrhi3_out (rtx insn, rtx operands[], int *len);
68extern const char *ashrsi3_out (rtx insn, rtx operands[], int *len);
69
70extern const char *lshrqi3_out (rtx insn, rtx operands[], int *len);
71extern const char *lshrhi3_out (rtx insn, rtx operands[], int *len);
72extern const char *lshrsi3_out (rtx insn, rtx operands[], int *len);
02d9a2c3 73
74extern const char *avr_out_ashlpsi3 (rtx, rtx*, int*);
75extern const char *avr_out_ashrpsi3 (rtx, rtx*, int*);
76extern const char *avr_out_lshrpsi3 (rtx, rtx*, int*);
77
9643da7d 78extern bool avr_rotate_bytes (rtx operands[]);
206a5129 79
017c5b98 80extern const char* avr_out_fract (rtx, rtx[], bool, int*);
81extern rtx avr_to_int_mode (rtx);
82
df3d6232 83extern void expand_prologue (void);
32969c63 84extern void expand_epilogue (bool);
5bd39e93 85extern bool avr_emit_movmemhi (rtx*);
df3d6232 86extern int avr_epilogue_uses (int regno);
a12b9b80 87extern int avr_starting_frame_offset (void);
df3d6232 88
206a5129 89extern void avr_output_addr_vec_elt (FILE *stream, int value);
90extern const char *avr_out_sbxx_branch (rtx insn, rtx operands[]);
6be828c1 91extern const char* avr_out_bitop (rtx, rtx*, int*);
b4ebb666 92extern const char* avr_out_plus (rtx, rtx*, int* =NULL, int* =NULL);
915f904b 93extern const char* avr_out_addto_sp (rtx*, int*);
5bd39e93 94extern const char* avr_out_xload (rtx, rtx*, int*);
95extern const char* avr_out_movmem (rtx, rtx*, int*);
15b84087 96extern const char* avr_out_insert_bits (rtx*, int*);
6be828c1 97extern bool avr_popcount_each_byte (rtx, int, int);
15b84087 98extern bool avr_has_nibble_0xf (rtx);
206a5129 99
164f5b34 100extern int extra_constraint_Q (rtx x);
206a5129 101extern int adjust_insn_length (rtx insn, int len);
2f2d376f 102extern const char* output_reload_inhi (rtx*, rtx, int*);
5bca95a8 103extern const char* output_reload_insisf (rtx*, rtx, int*);
02d9a2c3 104extern const char* avr_out_reload_inpsi (rtx*, rtx, int*);
4b72e680 105extern const char* avr_out_lpm (rtx, rtx*, int*);
206a5129 106extern void notice_update_cc (rtx body, rtx insn);
206a5129 107extern int reg_unused_after (rtx insn, rtx reg);
108extern int _reg_unused_after (rtx insn, rtx reg);
109extern int avr_jump_mode (rtx x, rtx insn);
8deb3959 110extern int test_hard_reg_class (enum reg_class rclass, rtx x);
206a5129 111extern int jump_over_one_insn_p (rtx insn, rtx dest);
112
113extern int avr_hard_regno_mode_ok (int regno, enum machine_mode mode);
206a5129 114extern void final_prescan_insn (rtx insn, rtx *operand, int num_operands);
115extern int avr_simplify_comparison_p (enum machine_mode mode,
8deb3959 116 RTX_CODE op, rtx x);
206a5129 117extern RTX_CODE avr_normalize_condition (RTX_CODE condition);
8deb3959 118extern void out_shift_with_cnt (const char *templ, rtx insn,
206a5129 119 rtx operands[], int *len, int t_len);
63477dcc 120extern enum reg_class avr_mode_code_base_reg_class (enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
f8a8fc7b 121extern bool avr_regno_mode_code_ok_for_base_p (int, enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
e484266f 122extern rtx avr_incoming_return_addr_rtx (void);
1f46ee39 123extern rtx avr_legitimize_reload_address (rtx*, enum machine_mode, int, int, int, int, rtx (*)(rtx,int));
590da9f2 124extern bool avr_mem_flash_p (rtx);
125extern bool avr_mem_memx_p (rtx);
4202ef11 126extern bool avr_load_libgcc_p (rtx);
5bd39e93 127extern bool avr_xload_libgcc_p (enum machine_mode);
2d86450c 128
129extern rtx lpm_reg_rtx;
130extern rtx lpm_addr_reg_rtx;
131extern rtx tmp_reg_rtx;
132extern rtx zero_reg_rtx;
133extern rtx all_regs_rtx[32];
134extern rtx rampz_rtx;
135
a28e4651 136#endif /* RTX_CODE */
137
a28e4651 138#ifdef REAL_VALUE_TYPE
206a5129 139extern void asm_output_float (FILE *file, REAL_VALUE_TYPE n);
e511e253 140#endif
47fe598e 141
83921eda 142extern bool avr_have_dimode;
143
47fe598e 144/* From avr-log.c */
145
146#define avr_edump (avr_log_set_caller_e (__FUNCTION__))
147#define avr_fdump (avr_log_set_caller_f (__FUNCTION__))
148
149extern int (*avr_log_set_caller_e (const char*))(const char*, ...);
150extern int (*avr_log_set_caller_f (const char*))(FILE*, const char*, ...);
151
152extern void avr_log_set_avr_log (void);
153
154typedef struct
155{
4202ef11 156 unsigned address_cost :1;
19f7f0b3 157 unsigned builtin :1;
4202ef11 158 unsigned constraints :1;
47fe598e 159 unsigned legitimate_address_p :1;
160 unsigned legitimize_address :1;
161 unsigned legitimize_reload_address :1;
4202ef11 162 unsigned progmem :1;
163 unsigned rtx_costs :1;
47fe598e 164} avr_log_t;
165
166extern avr_log_t avr_log;