]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/avr/avr-protos.h
avr.opt (mmcu=): Change to have a string value.
[thirdparty/gcc.git] / gcc / config / avr / avr-protos.h
CommitLineData
90e7678c
DC
1/* Prototypes for exported functions defined in avr.c
2
23a5b65a 3 Copyright (C) 2000-2014 Free Software Foundation, Inc.
92bffc14 4 Contributed by Denis Chertykov (chertykov@gmail.com)
90e7678c 5
7ec022b2 6 This file is part of GCC.
90e7678c 7
7ec022b2 8 GCC is free software; you can redistribute it and/or modify
90e7678c 9 it under the terms of the GNU General Public License as published by
2f83c7d6 10 the Free Software Foundation; either version 3, or (at your option)
90e7678c
DC
11 any later version.
12
7ec022b2 13 GCC is distributed in the hope that it will be useful,
90e7678c
DC
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
2f83c7d6
NC
19 along with GCC; see the file COPYING3. If not see
20 <http://www.gnu.org/licenses/>. */
90e7678c
DC
21
22
00892272 23extern int avr_function_arg_regno_p (int r);
97c281da 24extern void avr_cpu_cpp_builtins (struct cpp_reader * pfile);
269e3795 25extern enum reg_class avr_regno_reg_class (int r);
269e3795 26extern void asm_globalize_label (FILE *file, const char *name);
00892272 27extern void avr_adjust_reg_alloc_order (void);
c21ca196 28extern int avr_initial_elimination_offset (int from, int to);
269e3795 29extern int avr_simple_epilogue (void);
91635d08 30extern int avr_hard_regno_rename_ok (unsigned int, unsigned int);
3f02a5f3 31extern rtx avr_return_addr_rtx (int count, rtx tem);
7c209481 32extern void avr_register_target_pragmas (void);
7bc6df2c 33extern void avr_init_expanders (void);
6bec29c9 34
269e3795 35#ifdef TREE_CODE
f9d29866
JR
36extern void avr_asm_output_aligned_decl_common (FILE*, tree, const char*, unsigned HOST_WIDE_INT, unsigned int, bool);
37extern void avr_asm_asm_output_aligned_bss (FILE *, tree, const char *, unsigned HOST_WIDE_INT, int, void (*) (FILE *, tree, const char *, unsigned HOST_WIDE_INT, int));
269e3795 38extern void asm_output_external (FILE *file, tree decl, char *name);
427ee360 39extern int avr_progmem_p (tree decl, tree attributes);
6bec29c9 40
90e7678c 41#ifdef RTX_CODE /* inside TREE_CODE */
00892272 42extern void avr_init_cumulative_args (CUMULATIVE_ARGS*, tree, rtx, tree);
90e7678c
DC
43#endif /* RTX_CODE inside TREE_CODE */
44
90e7678c
DC
45#endif /* TREE_CODE */
46
47#ifdef RTX_CODE
b04ffa56 48extern int avr_hard_regno_call_part_clobbered (unsigned, enum machine_mode);
98024b4e
DM
49extern const char *output_movqi (rtx_insn *insn, rtx operands[], int *l);
50extern const char *output_movhi (rtx_insn *insn, rtx operands[], int *l);
51extern const char *output_movsisf (rtx_insn *insn, rtx operands[], int *l);
52extern const char *avr_out_tstsi (rtx_insn *, rtx*, int*);
53extern const char *avr_out_tsthi (rtx_insn *, rtx*, int*);
54extern const char *avr_out_tstpsi (rtx_insn *, rtx*, int*);
55extern const char *avr_out_compare (rtx_insn *, rtx*, int*);
56extern const char *avr_out_compare64 (rtx_insn *, rtx*, int*);
269e3795 57extern const char *ret_cond_branch (rtx x, int len, int reverse);
98024b4e 58extern const char *avr_out_movpsi (rtx_insn *, rtx*, int*);
269e3795 59
98024b4e
DM
60extern const char *ashlqi3_out (rtx_insn *insn, rtx operands[], int *len);
61extern const char *ashlhi3_out (rtx_insn *insn, rtx operands[], int *len);
62extern const char *ashlsi3_out (rtx_insn *insn, rtx operands[], int *len);
269e3795 63
98024b4e
DM
64extern const char *ashrqi3_out (rtx_insn *insn, rtx operands[], int *len);
65extern const char *ashrhi3_out (rtx_insn *insn, rtx operands[], int *len);
66extern const char *ashrsi3_out (rtx_insn *insn, rtx operands[], int *len);
269e3795 67
98024b4e
DM
68extern const char *lshrqi3_out (rtx_insn *insn, rtx operands[], int *len);
69extern const char *lshrhi3_out (rtx_insn *insn, rtx operands[], int *len);
70extern const char *lshrsi3_out (rtx_insn *insn, rtx operands[], int *len);
e4fe948a 71
98024b4e
DM
72extern const char *avr_out_ashlpsi3 (rtx_insn *, rtx*, int*);
73extern const char *avr_out_ashrpsi3 (rtx_insn *, rtx*, int*);
74extern const char *avr_out_lshrpsi3 (rtx_insn *, rtx*, int*);
e4fe948a 75
58f0ea2f 76extern bool avr_rotate_bytes (rtx operands[]);
269e3795 77
98024b4e 78extern const char* avr_out_fract (rtx_insn *, rtx[], bool, int*);
e55e4056
GJL
79extern rtx avr_to_int_mode (rtx);
80
00892272
GJL
81extern void avr_expand_prologue (void);
82extern void avr_expand_epilogue (bool);
7bc6df2c 83extern bool avr_emit_movmemhi (rtx*);
4fc2b4ff 84extern int avr_epilogue_uses (int regno);
d702f362 85extern int avr_starting_frame_offset (void);
4fc2b4ff 86
269e3795 87extern void avr_output_addr_vec_elt (FILE *stream, int value);
98024b4e 88extern const char *avr_out_sbxx_branch (rtx_insn *insn, rtx operands[]);
6ebe2d6c 89extern const char* avr_out_bitop (rtx, rtx*, int*);
02371798 90extern const char* avr_out_plus (rtx, rtx*, int* =NULL, int* =NULL, bool =true);
98024b4e 91extern const char* avr_out_round (rtx_insn *, rtx*, int* =NULL);
180ee6d1 92extern const char* avr_out_addto_sp (rtx*, int*);
98024b4e
DM
93extern const char* avr_out_xload (rtx_insn *, rtx*, int*);
94extern const char* avr_out_movmem (rtx_insn *, rtx*, int*);
0c578db6 95extern const char* avr_out_insert_bits (rtx*, int*);
6ebe2d6c 96extern bool avr_popcount_each_byte (rtx, int, int);
0c578db6 97extern bool avr_has_nibble_0xf (rtx);
269e3795 98
2d67effa 99extern int extra_constraint_Q (rtx x);
98024b4e 100extern int avr_adjust_insn_length (rtx_insn *insn, int len);
20633efc 101extern const char* output_reload_inhi (rtx*, rtx, int*);
8a6a05ce 102extern const char* output_reload_insisf (rtx*, rtx, int*);
e4fe948a 103extern const char* avr_out_reload_inpsi (rtx*, rtx, int*);
98024b4e 104extern const char* avr_out_lpm (rtx_insn *, rtx*, int*);
647d790d 105extern void avr_notice_update_cc (rtx body, rtx_insn *insn);
98024b4e
DM
106extern int reg_unused_after (rtx_insn *insn, rtx reg);
107extern int _reg_unused_after (rtx_insn *insn, rtx reg);
108extern int avr_jump_mode (rtx x, rtx_insn *insn);
0a2aaacc 109extern int test_hard_reg_class (enum reg_class rclass, rtx x);
98024b4e 110extern int jump_over_one_insn_p (rtx_insn *insn, rtx dest);
269e3795
SB
111
112extern int avr_hard_regno_mode_ok (int regno, enum machine_mode mode);
98024b4e
DM
113extern void avr_final_prescan_insn (rtx_insn *insn, rtx *operand,
114 int num_operands);
269e3795 115extern int avr_simplify_comparison_p (enum machine_mode mode,
0a2aaacc 116 RTX_CODE op, rtx x);
269e3795 117extern RTX_CODE avr_normalize_condition (RTX_CODE condition);
98024b4e 118extern void out_shift_with_cnt (const char *templ, rtx_insn *insn,
269e3795 119 rtx operands[], int *len, int t_len);
ed2d1466 120extern enum reg_class avr_mode_code_base_reg_class (enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
86fc3d06 121extern bool avr_regno_mode_code_ok_for_base_p (int, enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
bdfe906f 122extern rtx avr_incoming_return_addr_rtx (void);
c1a330ef 123extern rtx avr_legitimize_reload_address (rtx*, enum machine_mode, int, int, int, int, rtx (*)(rtx,int));
3a840863
GJL
124extern bool avr_mem_flash_p (rtx);
125extern bool avr_mem_memx_p (rtx);
7c209481 126extern bool avr_load_libgcc_p (rtx);
7bc6df2c 127extern bool avr_xload_libgcc_p (enum machine_mode);
f9d29866 128extern rtx avr_eval_addr_attrib (rtx x);
38ee0815
GJL
129
130extern rtx lpm_reg_rtx;
131extern rtx lpm_addr_reg_rtx;
132extern rtx tmp_reg_rtx;
133extern rtx zero_reg_rtx;
134extern rtx all_regs_rtx[32];
135extern rtx rampz_rtx;
136
90e7678c
DC
137#endif /* RTX_CODE */
138
90e7678c 139#ifdef REAL_VALUE_TYPE
269e3795 140extern void asm_output_float (FILE *file, REAL_VALUE_TYPE n);
6bec29c9 141#endif
6c7dfafe 142
8c57e547
GJL
143extern bool avr_have_dimode;
144
6c7dfafe
GJL
145/* From avr-log.c */
146
147#define avr_edump (avr_log_set_caller_e (__FUNCTION__))
148#define avr_fdump (avr_log_set_caller_f (__FUNCTION__))
149
150extern int (*avr_log_set_caller_e (const char*))(const char*, ...);
151extern int (*avr_log_set_caller_f (const char*))(FILE*, const char*, ...);
152
153extern void avr_log_set_avr_log (void);
154
155typedef struct
156{
7c209481 157 unsigned address_cost :1;
b5e35770 158 unsigned builtin :1;
7c209481 159 unsigned constraints :1;
6c7dfafe
GJL
160 unsigned legitimate_address_p :1;
161 unsigned legitimize_address :1;
162 unsigned legitimize_reload_address :1;
7c209481
GJL
163 unsigned progmem :1;
164 unsigned rtx_costs :1;
6c7dfafe
GJL
165} avr_log_t;
166
167extern avr_log_t avr_log;