X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Ffirm%2Fbearch_firm.c;h=606e2430bd2c628f5fb8a087b0cda3ff0685d2ab;hb=78b108e8e0ebfcb01158644ca3d15c6358590874;hp=266d3b7897af6b6f4a2ed7178f483ebd08ac625c;hpb=ffab78b6caa6f7ef41377b19f1745393df022ff7;p=libfirm diff --git a/ir/be/firm/bearch_firm.c b/ir/be/firm/bearch_firm.c index 266d3b789..606e2430b 100644 --- a/ir/be/firm/bearch_firm.c +++ b/ir/be/firm/bearch_firm.c @@ -1,13 +1,8 @@ - /** * ISA implementation for Firm IR nodes. */ #ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef WITH_LIBCORE -#include +#include #endif #include "bitset.h" @@ -254,8 +249,8 @@ static void firm_get_call_abi(const void *self, ir_type *method_type, be_abi_cal static const arch_register_req_t firm_std_reg_req = { arch_register_req_type_normal, ®_classes[CLS_DATAB], - NULL, - NULL + 0, + 0 }; static const arch_register_req_t * @@ -357,11 +352,15 @@ static void firm_set_stack_bias(const void *self, ir_node *irn, int bias) { } -static entity *firm_get_frame_entity(const void *self, const ir_node *irn) +static ir_entity *firm_get_frame_entity(const void *self, const ir_node *irn) { return NULL; } +static void firm_set_frame_entity(const void *self, ir_node *irn, ir_entity *ent) +{ +} + static const arch_irn_ops_if_t firm_irn_ops_if = { firm_get_irn_reg_req, firm_set_irn_reg, @@ -369,7 +368,12 @@ static const arch_irn_ops_if_t firm_irn_ops_if = { firm_classify, firm_get_flags, firm_get_frame_entity, - firm_set_stack_bias + firm_set_frame_entity, + firm_set_stack_bias, + NULL, /* get_inverse */ + NULL, /* get_op_estimated_cost */ + NULL, /* possible_memory_operand */ + NULL, /* perform_memory_operand */ }; static const arch_irn_ops_t firm_irn_ops = { @@ -425,7 +429,7 @@ static ir_node *new_Imm(ir_graph *irg, ir_node *bl, ir_node *cnst) { static void prepare_walker(ir_node *irn, void *data) { - opcode opc = get_irn_opcode(irn); + ir_opcode opc = get_irn_opcode(irn); /* A replacement for this node has already been computed. */ if(get_irn_link(irn)) @@ -482,8 +486,8 @@ static void localize_const_walker(ir_node *irn, void *data) ir_node *bl = get_nodes_block(irn); for(i = 0, n = get_irn_arity(irn); i < n; ++i) { - ir_node *op = get_irn_n(irn, i); - opcode opc = get_irn_opcode(op); + ir_node *op = get_irn_n(irn, i); + ir_opcode opc = get_irn_opcode(op); if(opc == iro_Const || opc == iro_Unknown @@ -563,19 +567,20 @@ static void firm_codegen_done(void *self) free(self); } -static void *firm_cg_init(const be_irg_t *birg); +static void *firm_cg_init(be_irg_t *birg); static const arch_code_generator_if_t firm_code_gen_if = { firm_cg_init, NULL, firm_prepare_graph, + NULL, /* spill */ firm_before_sched, firm_before_ra, firm_after_ra, firm_codegen_done }; -static void *firm_cg_init(const be_irg_t *birg) +static void *firm_cg_init(be_irg_t *birg) { firm_code_gen_t *cg = xmalloc(sizeof(*cg)); cg->impl = &firm_code_gen_if; @@ -589,10 +594,14 @@ static const arch_code_generator_if_t *firm_get_code_generator_if(void *self) return &firm_code_gen_if; } -static const list_sched_selector_t *firm_get_list_sched_selector(const void *self) { +static const list_sched_selector_t *firm_get_list_sched_selector(const void *self, list_sched_selector_t *selector) { return trivial_selector; } +static const ilp_sched_selector_t *firm_get_ilp_sched_selector(const void *self) { + return NULL; +} + /** * Returns the necessary byte alignment for storing a register of given class. */ @@ -601,11 +610,48 @@ static int firm_get_reg_class_alignment(const void *self, const arch_register_cl return get_mode_size_bytes(mode); } -#ifdef WITH_LIBCORE -static void firm_register_options(lc_opt_entry_t *ent) -{ +static const be_execution_unit_t ***firm_get_allowed_execution_units(const void *self, const ir_node *irn) { + /* TODO */ + assert(0); + return NULL; +} + +static const be_machine_t *firm_get_machine(const void *self) { + /* TODO */ + assert(0); + return NULL; +} + +/** + * Return irp irgs in the desired order. + */ +static ir_graph **firm_get_irg_list(const void *self, ir_graph ***irg_list) { + return NULL; +} + +/** + * Returns the libFirm configuration parameter for this backend. + */ +static const backend_params *firm_get_libfirm_params(void) { + static arch_dep_params_t ad = { + 1, /* allow subs */ + 0, /* Muls are fast enough on Firm */ + 31, /* shift would be ok */ + 0, /* no Mulhs */ + 0, /* no Mulhu */ + 0, /* no Mulh */ + }; + static backend_params p = { + NULL, /* no additional opcodes */ + NULL, /* will be set later */ + 0, /* no dword lowering */ + NULL, /* no creator function */ + NULL, /* context for create_intrinsic_fkt */ + }; + + p.dep_param = &ad; + return &p; } -#endif const arch_isa_if_t firm_isa = { firm_init, @@ -617,8 +663,10 @@ const arch_isa_if_t firm_isa = { firm_get_irn_handler, firm_get_code_generator_if, firm_get_list_sched_selector, + firm_get_ilp_sched_selector, firm_get_reg_class_alignment, -#ifdef WITH_LIBCORE - firm_register_options, -#endif + firm_get_libfirm_params, + firm_get_allowed_execution_units, + firm_get_machine, + firm_get_irg_list, };