]>
Commit | Line | Data |
---|---|---|
4673c1a0 | 1 | /* Definitions of target machine for GNU compiler, for IBM S/390. |
71e45bc2 | 2 | Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, |
3 | 2012 Free Software Foundation, Inc. | |
e68d6a13 | 4 | |
4673c1a0 | 5 | Contributed by Hartmut Penner (hpenner@de.ibm.com) |
6 | ||
1e98c8f3 | 7 | This file is part of GCC. |
4673c1a0 | 8 | |
1e98c8f3 | 9 | GCC is free software; you can redistribute it and/or modify it under |
10 | the terms of the GNU General Public License as published by the Free | |
038d1e19 | 11 | Software Foundation; either version 3, or (at your option) any later |
1e98c8f3 | 12 | version. |
4673c1a0 | 13 | |
1e98c8f3 | 14 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
15 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
16 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
17 | for more details. | |
4673c1a0 | 18 | |
19 | You should have received a copy of the GNU General Public License | |
038d1e19 | 20 | along with GCC; see the file COPYING3. If not see |
21 | <http://www.gnu.org/licenses/>. */ | |
4673c1a0 | 22 | |
59bc01b3 | 23 | |
24 | ||
ffead1ca | 25 | /* Prototypes of functions used for constraint evaluation in |
59bc01b3 | 26 | constraints.c. */ |
27 | ||
28 | extern int s390_mem_constraint (const char *str, rtx op); | |
29 | extern int s390_O_constraint_str (const char c, HOST_WIDE_INT value); | |
30 | extern int s390_N_constraint_str (const char *str, HOST_WIDE_INT value); | |
31 | extern int s390_float_const_zero_p (rtx value); | |
e68d6a13 | 32 | extern bool s390_check_symref_alignment (rtx addr, HOST_WIDE_INT alignment); |
59bc01b3 | 33 | |
34 | ||
56769981 | 35 | /* Declare functions in s390.c. */ |
4673c1a0 | 36 | |
4fed3f99 | 37 | extern HOST_WIDE_INT s390_initial_elimination_offset (int, int); |
b40da9a7 | 38 | extern void s390_emit_prologue (void); |
7346ca58 | 39 | extern void s390_emit_epilogue (bool); |
b40da9a7 | 40 | extern void s390_function_profiler (FILE *, int); |
1e639cb0 | 41 | extern void s390_set_has_landing_pad_p (bool); |
8f1128bb | 42 | extern bool s390_hard_regno_mode_ok (unsigned int, enum machine_mode); |
d1a5573e | 43 | extern bool s390_hard_regno_rename_ok (unsigned int, unsigned int); |
6c2d82ab | 44 | extern int s390_class_max_nregs (enum reg_class, enum machine_mode); |
4673c1a0 | 45 | |
56769981 | 46 | #ifdef RTX_CODE |
64a1078f | 47 | extern int s390_extra_constraint_str (rtx, int, const char *); |
48 | extern int s390_const_ok_for_constraint_p (HOST_WIDE_INT, int, const char *); | |
e863b008 | 49 | extern int s390_const_double_ok_for_constraint_p (rtx, int, const char *); |
64a1078f | 50 | extern int s390_single_part (rtx, enum machine_mode, enum machine_mode, int); |
51 | extern unsigned HOST_WIDE_INT s390_extract_part (rtx, enum machine_mode, int); | |
e68d6a13 | 52 | extern bool s390_contiguous_bitmask_p (unsigned HOST_WIDE_INT, int, int *, int *); |
b40da9a7 | 53 | extern bool s390_split_ok_p (rtx, rtx, enum machine_mode, int); |
74bdf297 | 54 | extern bool s390_overlap_p (rtx, rtx, HOST_WIDE_INT); |
9dffd3ff | 55 | extern bool s390_offset_p (rtx, rtx, rtx); |
b40da9a7 | 56 | extern int tls_symbolic_operand (rtx); |
56769981 | 57 | |
e5537457 | 58 | extern bool s390_match_ccmode (rtx, enum machine_mode); |
59 | extern enum machine_mode s390_tm_ccmode (rtx, rtx, bool); | |
b40da9a7 | 60 | extern enum machine_mode s390_select_ccmode (enum rtx_code, rtx, rtx); |
0d656e8b | 61 | extern rtx s390_emit_compare (enum rtx_code, rtx, rtx); |
62 | extern void s390_emit_jump (rtx, rtx); | |
e5537457 | 63 | extern bool symbolic_reference_mentioned_p (rtx); |
64 | extern bool tls_symbolic_reference_mentioned_p (rtx); | |
65 | extern bool legitimate_la_operand_p (rtx); | |
66 | extern bool preferred_la_operand_p (rtx, rtx); | |
b40da9a7 | 67 | extern int legitimate_pic_operand_p (rtx); |
e5537457 | 68 | extern bool legitimate_reload_constant_p (rtx); |
b40da9a7 | 69 | extern rtx legitimize_pic_address (rtx, rtx); |
e4542435 | 70 | extern rtx legitimize_reload_address (rtx, enum machine_mode, int, int); |
b40da9a7 | 71 | extern enum reg_class s390_secondary_input_reload_class (enum reg_class, |
72 | enum machine_mode, | |
73 | rtx); | |
74 | extern enum reg_class s390_secondary_output_reload_class (enum reg_class, | |
75 | enum machine_mode, | |
76 | rtx); | |
e68d6a13 | 77 | extern void s390_reload_larl_operand (rtx , rtx , rtx); |
78 | extern void s390_reload_symref_address (rtx , rtx , rtx , bool); | |
b40da9a7 | 79 | extern void s390_expand_plus_operand (rtx, rtx, rtx); |
80 | extern void emit_symbolic_move (rtx *); | |
81 | extern void s390_load_address (rtx, rtx); | |
daa87e5a | 82 | extern bool s390_expand_movmem (rtx, rtx, rtx); |
805a133b | 83 | extern void s390_expand_setmem (rtx, rtx, rtx); |
daa87e5a | 84 | extern bool s390_expand_cmpmem (rtx, rtx, rtx, rtx); |
3b699fc7 | 85 | extern bool s390_expand_addcc (enum rtx_code, rtx, rtx, rtx, rtx, rtx); |
0349cc73 | 86 | extern bool s390_expand_insv (rtx, rtx, rtx, rtx); |
8c753480 | 87 | extern void s390_expand_cs_hqi (enum machine_mode, rtx, rtx, rtx, |
88 | rtx, rtx, bool); | |
ffead1ca | 89 | extern void s390_expand_atomic (enum machine_mode, enum rtx_code, |
7cc66daf | 90 | rtx, rtx, rtx, bool); |
b40da9a7 | 91 | extern rtx s390_return_addr_rtx (int, rtx); |
32f55309 | 92 | extern rtx s390_back_chain_rtx (void); |
7346ca58 | 93 | extern rtx s390_emit_call (rtx, rtx, rtx, rtx); |
3e247a31 | 94 | extern void s390_expand_logical_operator (enum rtx_code, |
95 | enum machine_mode, rtx *); | |
96 | extern bool s390_logical_operator_ok_p (rtx *); | |
3f56e755 | 97 | extern void s390_narrow_logical_operator (enum rtx_code, rtx *, rtx *); |
923cf36d | 98 | extern void s390_split_access_reg (rtx, rtx *, rtx *); |
4673c1a0 | 99 | |
b40da9a7 | 100 | extern void print_operand_address (FILE *, rtx); |
101 | extern void print_operand (FILE *, rtx, int); | |
74d2529d | 102 | extern void s390_output_pool_entry (rtx, enum machine_mode, unsigned int); |
6d0afa28 | 103 | extern int s390_label_align (rtx); |
b40da9a7 | 104 | extern int s390_agen_dep_p (rtx, rtx); |
20074f87 | 105 | extern rtx s390_load_got (void); |
cc87d0c5 | 106 | extern rtx s390_get_thread_pointer (void); |
b33c41a1 | 107 | extern void s390_emit_tpf_eh_return (rtx); |
8cc5de33 | 108 | extern bool s390_legitimate_address_without_index_p (rtx); |
417cba42 | 109 | extern bool s390_decompose_shift_count (rtx, rtx *, HOST_WIDE_INT *); |
8cc5de33 | 110 | extern int s390_branch_condition_mask (rtx); |
e68d6a13 | 111 | extern int s390_compare_and_branch_condition_mask (rtx); |
6bc28655 | 112 | extern bool s390_extzv_shift_ok (int, int, unsigned HOST_WIDE_INT); |
71343e6b | 113 | |
4673c1a0 | 114 | #endif /* RTX_CODE */ |