]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/avr/avr-protos.h
Update copyright years in gcc/
[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
516edfdd 36extern void avr_asm_output_aligned_decl_common (FILE*, const_tree, const char*, unsigned HOST_WIDE_INT, unsigned int, bool);
269e3795 37extern void asm_output_external (FILE *file, tree decl, char *name);
427ee360 38extern int avr_progmem_p (tree decl, tree attributes);
6bec29c9 39
90e7678c 40#ifdef RTX_CODE /* inside TREE_CODE */
00892272 41extern void avr_init_cumulative_args (CUMULATIVE_ARGS*, tree, rtx, tree);
90e7678c
DC
42#endif /* RTX_CODE inside TREE_CODE */
43
90e7678c
DC
44#endif /* TREE_CODE */
45
46#ifdef RTX_CODE
b04ffa56 47extern int avr_hard_regno_call_part_clobbered (unsigned, enum machine_mode);
269e3795
SB
48extern const char *output_movqi (rtx insn, rtx operands[], int *l);
49extern const char *output_movhi (rtx insn, rtx operands[], int *l);
8dab2ba5 50extern const char *output_movsisf (rtx insn, rtx operands[], int *l);
a7c0acd0
GJL
51extern const char *avr_out_tstsi (rtx, rtx*, int*);
52extern const char *avr_out_tsthi (rtx, rtx*, int*);
e4fe948a 53extern const char *avr_out_tstpsi (rtx, rtx*, int*);
a7c0acd0 54extern const char *avr_out_compare (rtx, rtx*, int*);
8c57e547 55extern const char *avr_out_compare64 (rtx, rtx*, int*);
269e3795 56extern const char *ret_cond_branch (rtx x, int len, int reverse);
e4fe948a 57extern const char *avr_out_movpsi (rtx, rtx*, int*);
269e3795
SB
58
59extern const char *ashlqi3_out (rtx insn, rtx operands[], int *len);
60extern const char *ashlhi3_out (rtx insn, rtx operands[], int *len);
61extern const char *ashlsi3_out (rtx insn, rtx operands[], int *len);
62
63extern const char *ashrqi3_out (rtx insn, rtx operands[], int *len);
64extern const char *ashrhi3_out (rtx insn, rtx operands[], int *len);
65extern const char *ashrsi3_out (rtx insn, rtx operands[], int *len);
66
67extern const char *lshrqi3_out (rtx insn, rtx operands[], int *len);
68extern const char *lshrhi3_out (rtx insn, rtx operands[], int *len);
69extern const char *lshrsi3_out (rtx insn, rtx operands[], int *len);
e4fe948a
GJL
70
71extern const char *avr_out_ashlpsi3 (rtx, rtx*, int*);
72extern const char *avr_out_ashrpsi3 (rtx, rtx*, int*);
73extern const char *avr_out_lshrpsi3 (rtx, rtx*, int*);
74
58f0ea2f 75extern bool avr_rotate_bytes (rtx operands[]);
269e3795 76
e55e4056
GJL
77extern const char* avr_out_fract (rtx, rtx[], bool, int*);
78extern rtx avr_to_int_mode (rtx);
79
00892272
GJL
80extern void avr_expand_prologue (void);
81extern void avr_expand_epilogue (bool);
7bc6df2c 82extern bool avr_emit_movmemhi (rtx*);
4fc2b4ff 83extern int avr_epilogue_uses (int regno);
d702f362 84extern int avr_starting_frame_offset (void);
4fc2b4ff 85
269e3795
SB
86extern void avr_output_addr_vec_elt (FILE *stream, int value);
87extern const char *avr_out_sbxx_branch (rtx insn, rtx operands[]);
6ebe2d6c 88extern const char* avr_out_bitop (rtx, rtx*, int*);
02371798
GJL
89extern const char* avr_out_plus (rtx, rtx*, int* =NULL, int* =NULL, bool =true);
90extern const char* avr_out_round (rtx, rtx*, int* =NULL);
180ee6d1 91extern const char* avr_out_addto_sp (rtx*, int*);
7bc6df2c
GJL
92extern const char* avr_out_xload (rtx, rtx*, int*);
93extern const char* avr_out_movmem (rtx, rtx*, int*);
0c578db6 94extern const char* avr_out_insert_bits (rtx*, int*);
6ebe2d6c 95extern bool avr_popcount_each_byte (rtx, int, int);
0c578db6 96extern bool avr_has_nibble_0xf (rtx);
269e3795 97
2d67effa 98extern int extra_constraint_Q (rtx x);
00892272 99extern int avr_adjust_insn_length (rtx insn, int len);
20633efc 100extern const char* output_reload_inhi (rtx*, rtx, int*);
8a6a05ce 101extern const char* output_reload_insisf (rtx*, rtx, int*);
e4fe948a 102extern const char* avr_out_reload_inpsi (rtx*, rtx, int*);
1a910f8f 103extern const char* avr_out_lpm (rtx, rtx*, int*);
00892272 104extern void avr_notice_update_cc (rtx body, rtx insn);
269e3795
SB
105extern int reg_unused_after (rtx insn, rtx reg);
106extern int _reg_unused_after (rtx insn, rtx reg);
107extern int avr_jump_mode (rtx x, rtx insn);
0a2aaacc 108extern int test_hard_reg_class (enum reg_class rclass, rtx x);
269e3795
SB
109extern int jump_over_one_insn_p (rtx insn, rtx dest);
110
111extern int avr_hard_regno_mode_ok (int regno, enum machine_mode mode);
00892272 112extern void avr_final_prescan_insn (rtx insn, rtx *operand, int num_operands);
269e3795 113extern int avr_simplify_comparison_p (enum machine_mode mode,
0a2aaacc 114 RTX_CODE op, rtx x);
269e3795 115extern RTX_CODE avr_normalize_condition (RTX_CODE condition);
0a2aaacc 116extern void out_shift_with_cnt (const char *templ, rtx insn,
269e3795 117 rtx operands[], int *len, int t_len);
ed2d1466 118extern enum reg_class avr_mode_code_base_reg_class (enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
86fc3d06 119extern bool avr_regno_mode_code_ok_for_base_p (int, enum machine_mode, addr_space_t, RTX_CODE, RTX_CODE);
bdfe906f 120extern rtx avr_incoming_return_addr_rtx (void);
c1a330ef 121extern rtx avr_legitimize_reload_address (rtx*, enum machine_mode, int, int, int, int, rtx (*)(rtx,int));
3a840863
GJL
122extern bool avr_mem_flash_p (rtx);
123extern bool avr_mem_memx_p (rtx);
7c209481 124extern bool avr_load_libgcc_p (rtx);
7bc6df2c 125extern bool avr_xload_libgcc_p (enum machine_mode);
38ee0815
GJL
126
127extern rtx lpm_reg_rtx;
128extern rtx lpm_addr_reg_rtx;
129extern rtx tmp_reg_rtx;
130extern rtx zero_reg_rtx;
131extern rtx all_regs_rtx[32];
132extern rtx rampz_rtx;
133
90e7678c
DC
134#endif /* RTX_CODE */
135
90e7678c 136#ifdef REAL_VALUE_TYPE
269e3795 137extern void asm_output_float (FILE *file, REAL_VALUE_TYPE n);
6bec29c9 138#endif
6c7dfafe 139
8c57e547
GJL
140extern bool avr_have_dimode;
141
6c7dfafe
GJL
142/* From avr-log.c */
143
144#define avr_edump (avr_log_set_caller_e (__FUNCTION__))
145#define avr_fdump (avr_log_set_caller_f (__FUNCTION__))
146
147extern int (*avr_log_set_caller_e (const char*))(const char*, ...);
148extern int (*avr_log_set_caller_f (const char*))(FILE*, const char*, ...);
149
150extern void avr_log_set_avr_log (void);
151
152typedef struct
153{
7c209481 154 unsigned address_cost :1;
b5e35770 155 unsigned builtin :1;
7c209481 156 unsigned constraints :1;
6c7dfafe
GJL
157 unsigned legitimate_address_p :1;
158 unsigned legitimize_address :1;
159 unsigned legitimize_reload_address :1;
7c209481
GJL
160 unsigned progmem :1;
161 unsigned rtx_costs :1;
6c7dfafe
GJL
162} avr_log_t;
163
164extern avr_log_t avr_log;