]>
Commit | Line | Data |
---|---|---|
ac445222 | 1 | /* Definitions of target machine for GNU compiler for IA-64. |
71e45bc2 | 2 | Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2007, 2010, 2011, 2012 |
b40da9a7 | 3 | Free Software Foundation, Inc. |
ac445222 | 4 | |
73f45a5c | 5 | This file is part of GCC. |
ac445222 | 6 | |
73f45a5c | 7 | GCC is free software; you can redistribute it and/or modify |
ac445222 | 8 | it under the terms of the GNU General Public License as published by |
038d1e19 | 9 | the Free Software Foundation; either version 3, or (at your option) |
ac445222 | 10 | any later version. |
11 | ||
73f45a5c | 12 | GCC is distributed in the hope that it will be useful, |
ac445222 | 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
038d1e19 | 18 | along with GCC; see the file COPYING3. If not see |
19 | <http://www.gnu.org/licenses/>. */ | |
ac445222 | 20 | |
218e3e4e | 21 | /* Shared between the driver and cc1. */ |
22 | extern enum unwind_info_type ia64_except_unwind_info (struct gcc_options *); | |
23 | ||
ac445222 | 24 | /* Functions defined in ia64.c */ |
25 | ||
58ada791 | 26 | extern int bundling_p; |
ac445222 | 27 | #ifdef RTX_CODE |
b40da9a7 | 28 | extern int ia64_st_address_bypass_p (rtx, rtx); |
29 | extern int ia64_ld_address_bypass_p (rtx, rtx); | |
30 | extern int ia64_produce_address_p (rtx); | |
b40da9a7 | 31 | |
32 | extern rtx ia64_expand_move (rtx, rtx); | |
33 | extern int ia64_move_ok (rtx, rtx); | |
4d053aca | 34 | extern int ia64_load_pair_ok (rtx, rtx); |
b40da9a7 | 35 | extern int addp4_optimize_ok (rtx, rtx); |
36 | extern void ia64_emit_cond_move (rtx, rtx, rtx); | |
37 | extern int ia64_depz_field_mask (rtx, rtx); | |
223b25f9 | 38 | extern void ia64_split_tmode_move (rtx[]); |
7a979707 | 39 | extern bool ia64_expand_movxf_movrf (enum machine_mode, rtx[]); |
74f4459c | 40 | extern void ia64_expand_compare (rtx *, rtx *, rtx *); |
a5c5f9d3 | 41 | extern void ia64_expand_vecint_cmov (rtx[]); |
42 | extern bool ia64_expand_vecint_minmax (enum rtx_code, enum machine_mode, rtx[]); | |
0cbc5fc8 | 43 | extern void ia64_unpack_assemble (rtx, rtx, rtx, bool); |
b133dbfc | 44 | extern void ia64_expand_unpack (rtx [], bool, bool); |
d3b735c8 | 45 | extern void ia64_expand_widen_sum (rtx[], bool); |
b40da9a7 | 46 | extern void ia64_expand_call (rtx, rtx, rtx, int); |
47 | extern void ia64_split_call (rtx, rtx, rtx, rtx, rtx, int, int); | |
48 | extern void ia64_reload_gp (void); | |
e35728c4 | 49 | extern void ia64_expand_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, |
50 | enum memmodel); | |
b40da9a7 | 51 | |
52 | extern HOST_WIDE_INT ia64_initial_elimination_offset (int, int); | |
53 | extern void ia64_expand_prologue (void); | |
54 | extern void ia64_expand_epilogue (int); | |
55 | ||
56 | extern int ia64_direct_return (void); | |
3ec3c84f | 57 | extern bool ia64_expand_load_address (rtx, rtx); |
b40da9a7 | 58 | extern int ia64_hard_regno_rename_ok (int, int); |
59 | ||
b40da9a7 | 60 | extern enum reg_class ia64_secondary_reload_class (enum reg_class, |
61 | enum machine_mode, rtx); | |
b40da9a7 | 62 | extern const char *get_bundle_name (int); |
28d5c3d9 | 63 | extern const char *output_probe_stack_range (rtx, rtx); |
b155a608 | 64 | |
65 | extern void ia64_expand_vec_perm_even_odd (rtx, rtx, rtx, int); | |
66 | extern bool ia64_expand_vec_perm_const (rtx op[4]); | |
67 | extern void ia64_expand_vec_setv2sf (rtx op[3]); | |
61788791 | 68 | #endif /* RTX_CODE */ |
69 | ||
ac445222 | 70 | #ifdef TREE_CODE |
ac445222 | 71 | #ifdef RTX_CODE |
b40da9a7 | 72 | extern rtx ia64_expand_builtin (tree, rtx, rtx, enum machine_mode, int); |
73 | extern rtx ia64_va_arg (tree, tree); | |
61788791 | 74 | #endif /* RTX_CODE */ |
75 | ||
b40da9a7 | 76 | extern void ia64_asm_output_external (FILE *, tree, const char *); |
fd42340b | 77 | extern void ia64_vms_output_aligned_decl_common (FILE *, tree, const char *, |
78 | unsigned HOST_WIDE_INT, | |
79 | unsigned int); | |
80 | extern void ia64_vms_elf_asm_named_section (const char *, unsigned int, tree); | |
f2507985 | 81 | extern void ia64_start_function (FILE *, const char *, tree); |
61788791 | 82 | #endif /* TREE_CODE */ |
83 | ||
b40da9a7 | 84 | extern int ia64_epilogue_uses (int); |
85 | extern int ia64_eh_uses (int); | |
86 | extern void emit_safe_across_calls (void); | |
87 | extern void ia64_init_builtins (void); | |
b40da9a7 | 88 | extern int ia64_dbx_register_number (int); |
f8b4f867 | 89 | |
b40da9a7 | 90 | extern rtx ia64_return_addr_rtx (HOST_WIDE_INT, rtx); |
91 | extern void ia64_split_return_addr_rtx (rtx); | |
f6b73c1b | 92 | |
23551094 | 93 | #ifdef ARGS_SIZE_RTX |
94 | /* expr.h defines ARGS_SIZE_RTX and `enum direction'. */ | |
fb80456a | 95 | extern enum direction ia64_hpux_function_arg_padding (enum machine_mode, const_tree); |
23551094 | 96 | #endif /* ARGS_SIZE_RTX */ |
23ebf0fe | 97 | |
b40da9a7 | 98 | extern void ia64_hpux_handle_builtin_pragma (struct cpp_reader *); |
2a76106f | 99 | extern void ia64_output_function_profiler (FILE *, int); |
f0ae8b21 | 100 | extern void ia64_profile_hook (int); |
475a74e0 | 101 | |
3072d30e | 102 | extern void ia64_init_expanders (void); |
50738926 | 103 | |
104 | extern rtx ia64_dconst_0_5 (void); | |
105 | extern rtx ia64_dconst_0_375 (void); |