2 * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
4 * This file is part of libFirm.
6 * This file may be distributed and/or modified under the terms of the
7 * GNU General Public License version 2 as published by the Free Software
8 * Foundation and appearing in the file LICENSE.GPL included in the
9 * packaging of this file.
11 * Licensees holding valid libFirm Professional Edition licenses may use
12 * this file in accordance with the libFirm Commercial License.
13 * Agreement provided with the Software.
15 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * @brief Forward declarations of backend types
23 * @author Matthias Braun
25 #ifndef FIRM_BE_TYPES_H
26 #define FIRM_BE_TYPES_H
28 #include "firm_types.h"
30 typedef unsigned int sched_timestep_t;
32 typedef struct arch_register_class_t arch_register_class_t;
33 typedef struct arch_register_req_t arch_register_req_t;
34 typedef struct arch_register_t arch_register_t;
35 typedef struct arch_flag_t arch_flag_t;
36 typedef struct arch_inverse_t arch_inverse_t;
37 typedef struct arch_isa_if_t arch_isa_if_t;
38 typedef struct arch_env_t arch_env_t;
41 * Some flags describing a node in more detail.
43 typedef enum arch_irn_flags_t {
44 arch_irn_flags_none = 0, /**< Node flags. */
45 arch_irn_flags_dont_spill = 1U << 0, /**< This must not be spilled. */
46 arch_irn_flags_rematerializable = 1U << 1, /**< This can be replicated instead of spilled/reloaded. */
47 arch_irn_flags_modify_flags = 1U << 2, /**< I modify flags, used by the
48 default check_modifies
49 implementation in beflags */
50 arch_irn_flags_simple_jump = 1U << 3, /**< a simple jump instruction */
51 arch_irn_flags_not_scheduled = 1U << 4, /**< node must not be scheduled*/
52 arch_irn_flags_backend = 1U << 5, /**< begin of custom backend
55 ENUM_BITSET(arch_irn_flags_t)
57 typedef struct be_lv_t be_lv_t;
58 typedef union be_lv_info_t be_lv_info_t;
60 typedef struct be_abi_call_flags_bits_t be_abi_call_flags_bits_t;
61 typedef union be_abi_call_flags_t be_abi_call_flags_t;
62 typedef struct be_abi_callbacks_t be_abi_callbacks_t;
63 typedef struct be_abi_call_t be_abi_call_t;
64 typedef struct be_abi_irg_t be_abi_irg_t;
65 typedef struct be_stack_layout_t be_stack_layout_t;
67 typedef struct be_dom_front_info_t be_dom_front_info_t;
69 typedef struct be_execution_unit_type_t be_execution_unit_type_t;
70 typedef struct be_execution_unit_t be_execution_unit_t;
71 typedef struct be_machine_t be_machine_t;
73 typedef struct backend_info_t backend_info_t;
74 typedef struct sched_info_t sched_info_t;
75 typedef struct reg_out_info_t reg_out_info_t;
77 typedef struct be_main_env_t be_main_env_t;
78 typedef struct be_options_t be_options_t;