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