16 #include "iroptimize.h" 104 unsigned byte_order_big_endian:1;
106 unsigned pic_supported:1;
109 unsigned unaligned_memaccess_supported:1;
111 unsigned thread_local_storage_supported:1;
223 FIRM_API
void be_main(FILE *output,
const char *compilation_unit_name);
float_int_conversion_overflow_style_t float_int_overflow
Semantic on float->int conversion overflow.
unsigned machine_size
size of machine word in bits.
asm_constraint_flags_t
flags categorizing assembler constraint specifications
void be_lower_for_target(void)
Lowers current program for the target architecture.
void(* after_transform_func)(ir_graph *irg, const char *name)
unsigned be_get_machine_size(void)
Returns size of machine words.
int be_is_valid_clobber(const char *clobber)
tests whether a string is a valid clobber in an ASM instruction
ir_type * va_list_type
Which type is to be used for va_list.
void be_dwarf_set_source_language(dwarf_source_language language)
Sets source language for dwarf debug information.
void be_dwarf_set_compilation_directory(const char *directory)
Sets working directory of the compiler (or directory where the compiler searched for sources) for dwa...
ir_type * type_long_double
type used for long double or NULL if none available.
invalid constraint (due to parse error)
ir_mode * mode_float_arithmetic
some backends like x87 can only do arithmetic in a specific float mode (load/store are still done in ...
const ir_settings_arch_dep_t * dep_param
Settings for architecture dependent optimizations.
input can be encoded as an immediate number
dwarf_source_language
Dwarf source language codes.
ir_type * be_get_type_long_double(void)
Returns type used for long double or NULL if none available.
input/output can be read/written to/from a memory address
struct ir_type ir_type
Type.
const backend_params * be_get_backend_param(void)
Returns the backend configuration parameter.
ir_mode * be_get_mode_float_arithmetic(void)
Returns supported float arithmetic mode or NULL if mode_D and mode_F are supported natively...
void(* lower_func)(ir_node *)
The input is also written to.
unsigned modulo_shift
Shifts on this architecture only read some bits of the shift value.
arch_allow_ifconv_func allow_ifconv
Backend settings for if-conversion.
asm_constraint_flags_t be_parse_asm_constraints(const char *constraints)
parse assembler constraint strings and returns flags (so the frontend knows which operands are inputs...
float_int_conversion_overflow_style_t be_get_float_int_overflow(void)
Returns the backend behaviour on float to integer conversion overflow.
void be_main(FILE *output, const char *compilation_unit_name)
Main interface to the frontend.
input/output can be in a register, in memory or an immediate
float_int_conversion_overflow_style_t
Specifies what happens when a float value is converted to an integer and overflow happens...
vararg_params vararg
How this backend implements variadic functions.
input/output can be in a register
unsigned stack_param_align
Alignment of stack parameters.
int(* arch_allow_ifconv_func)(ir_node *sel, ir_node *mux_false, ir_node *mux_true)
This function is called to evaluate, if a mux(sel, mux_false, mux_true) should be built for the curre...
This structure holds the information on how the backend implements variadic functions.
This structure contains parameters that should be propagated to the libFirm parameter set...
This operand and the following operand are commutative.
void be_initialize(void)
Initialize the backend for the selected isa.
char const * experimental
struct ir_mode ir_mode
SSA Value mode.
the value is modified before all inputs to the asm block are handled.
int be_parse_arg(const char *arg)
Parse one backend argument.
int be_is_big_endian(void)
Returns 1 if the backend uses big-endian byte ordering and 0 for little-endian.
void be_set_after_transform_func(after_transform_func func)
Sets a callback that is called after each transformation step in be_lower_for_target().
lower_func lower_va_arg
The function to lower a call to the va_arg macro.
struct ir_node ir_node
Procedure Graph Node.
struct ir_graph ir_graph
Procedure Graph.
struct ir_settings_arch_dep_t ir_settings_arch_dep_t
the constraint is not supported yet by libFirm (but valid in gcc)