From: Michael Beck Date: Sat, 19 Dec 2009 01:36:45 +0000 (+0000) Subject: Deleted generated files from svn, there are (re-)created by sparc_spec.pl. X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=75c3d36f124dbac5780d9c33cbfc4b30ae8e29a0;p=libfirm Deleted generated files from svn, there are (re-)created by sparc_spec.pl. [r26805] --- diff --git a/ir/be/sparc/gen_sparc_emitter.c b/ir/be/sparc/gen_sparc_emitter.c deleted file mode 100644 index 205c4c1c3..000000000 --- a/ir/be/sparc/gen_sparc_emitter.c +++ /dev/null @@ -1,126 +0,0 @@ -/** - * @file - * @brief Generated functions to emit code for assembler ir nodes. - * @note DO NOT EDIT THIS FILE, your changes will be lost. - * Edit libfirm/ir/be/sparc/sparc_spec.pl instead. - * created by: libfirm/ir/be/scripts/generate_emitter.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc - * @date Tue Dec 15 15:19:15 2009 - */ -#include "config.h" - -#include - -#include "irnode.h" -#include "irop_t.h" -#include "irprog_t.h" - -#include "gen_sparc_emitter.h" -#include "sparc_new_nodes.h" -#include "sparc_emitter.h" - -static void emit_sparc_SubSP(const ir_node *node) { - be_emit_cstring("\tadd "); - sparc_emit_source_register(node, 0); - be_emit_cstring(", "); - sparc_emit_source_register(node, 1); - be_emit_cstring(", "); - sparc_emit_dest_register(node, 0); - be_emit_finish_line_gas(node); -} - -static void emit_sparc_Add(const ir_node *node) { - be_emit_cstring("\tadd "); - sparc_emit_source_register(node, 0); - be_emit_cstring(", "); - sparc_emit_reg_or_imm(node, 1); - be_emit_cstring(", "); - sparc_emit_dest_register(node, 0); - be_emit_finish_line_gas(node); -} - -static void emit_sparc_Store(const ir_node *node) { - be_emit_cstring("\tst"); - sparc_emit_store_mode(node); - be_emit_char(' '); - sparc_emit_source_register(node, 0); - be_emit_cstring(", ["); - sparc_emit_dest_register(node, 0); - sparc_emit_offset(node); - be_emit_char(']'); - be_emit_finish_line_gas(node); -} - -static void emit_sparc_Mov(const ir_node *node) { - be_emit_cstring("\tmov "); - sparc_emit_reg_or_imm(node, 0); - be_emit_cstring(", "); - sparc_emit_dest_register(node, 0); - be_emit_finish_line_gas(node); -} - -static void emit_sparc_Tst(const ir_node *node) { - be_emit_cstring("\ttst "); - sparc_emit_source_register(node, 0); - be_emit_finish_line_gas(node); -} - -static void emit_sparc_Cmp(const ir_node *node) { - be_emit_cstring("\tcmp "); - sparc_emit_source_register(node, 0); - be_emit_cstring(", "); - sparc_emit_reg_or_imm(node, 1); - be_emit_finish_line_gas(node); -} - -static void emit_sparc_Sub(const ir_node *node) { - be_emit_cstring("\tsub "); - sparc_emit_source_register(node, 0); - be_emit_cstring(", "); - sparc_emit_reg_or_imm(node, 1); - be_emit_cstring(", "); - sparc_emit_dest_register(node, 0); - be_emit_finish_line_gas(node); -} - -static void emit_sparc_Load(const ir_node *node) { - be_emit_cstring("\tld"); - sparc_emit_load_mode(node); - be_emit_cstring(" ["); - sparc_emit_source_register(node, 0); - sparc_emit_offset(node); - be_emit_cstring("], "); - sparc_emit_dest_register(node, 0); - be_emit_finish_line_gas(node); -} - -static void emit_sparc_AddSP(const ir_node *node) { - be_emit_cstring("\tsub "); - sparc_emit_source_register(node, 0); - be_emit_cstring(", "); - sparc_emit_source_register(node, 1); - be_emit_cstring(", "); - sparc_emit_dest_register(node, 0); - be_emit_finish_line_gas(node); -} - -/** - * Enters the emitter functions for handled nodes into the generic - * pointer of an opcode. - */ -void sparc_register_spec_emitters(void) { - -#define BE_EMIT(a) op_sparc_##a->ops.generic = (op_func)emit_sparc_##a - - /* generated emitter functions */ - BE_EMIT(SubSP); - BE_EMIT(Add); - BE_EMIT(Store); - BE_EMIT(Mov); - BE_EMIT(Tst); - BE_EMIT(Cmp); - BE_EMIT(Sub); - BE_EMIT(Load); - BE_EMIT(AddSP); - -#undef BE_EMIT -} diff --git a/ir/be/sparc/gen_sparc_emitter.h b/ir/be/sparc/gen_sparc_emitter.h deleted file mode 100644 index f612ec547..000000000 --- a/ir/be/sparc/gen_sparc_emitter.h +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @file - * @brief Function prototypes for the emitter functions. - * @note DO NOT EDIT THIS FILE, your changes will be lost. - * Edit libfirm/ir/be/sparc/sparc_spec.pl instead. - * created by: libfirm/ir/be/scripts/generate_emitter.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc - * @date Tue Dec 15 15:19:15 2009 - */ -#ifndef FIRM_BE_SPARC_GEN_SPARC_EMITTER_H -#define FIRM_BE_SPARC_GEN_SPARC_EMITTER_H - -#include "irnode.h" -#include "sparc_emitter.h" - -void sparc_register_spec_emitters(void); - -#endif diff --git a/ir/be/sparc/gen_sparc_machine.c b/ir/be/sparc/gen_sparc_machine.c deleted file mode 100644 index 16e60df25..000000000 --- a/ir/be/sparc/gen_sparc_machine.c +++ /dev/null @@ -1,40 +0,0 @@ -/** - * @file - * @brief Generated functions for machine description interface. - * @note DO NOT EDIT THIS FILE, your changes will be lost. - * Edit libfirm/ir/be/sparc/sparc_spec.pl instead. - * created by: libfirm/ir/be/scripts/generate_machine.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc - * @date Tue Dec 15 15:19:15 2009 - */ -#include "config.h" - -#include "gen_sparc_machine.h" - - -be_execution_unit_type_t sparc_execution_unit_types[] = { -}; - -be_machine_t sparc_cpu = { - 3, - 1, - 0, - sparc_execution_unit_types -}; - -/** - * Returns the sparc machines description - */ -const be_machine_t *sparc_init_machine_description(void) { - static int initialized = 0; - - if (! initialized) { - be_execution_unit_type_t *cur_unit_tp; - (void) cur_unit_tp; /* avoid warning */ - - be_machine_init_dummy_unit(); - - initialized = 1; - } - - return &sparc_cpu; -} diff --git a/ir/be/sparc/gen_sparc_machine.h b/ir/be/sparc/gen_sparc_machine.h deleted file mode 100644 index b6975ab69..000000000 --- a/ir/be/sparc/gen_sparc_machine.h +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @file - * @brief Function prototypes for the machine description. - * @note DO NOT EDIT THIS FILE, your changes will be lost. - * Edit libfirm/ir/be/sparc/sparc_spec.pl instead. - * created by: libfirm/ir/be/scripts/generate_machine.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc - * @date Tue Dec 15 15:19:15 2009 - */ -#ifndef FIRM_BE_SPARC_GEN_SPARC_MACHINE_H -#define FIRM_BE_SPARC_GEN_SPARC_MACHINE_H - -#include "../bemachine.h" - -/** - * Returns the sparc machine description. - */ -const be_machine_t *sparc_init_machine_description(void); - - - -#endif diff --git a/ir/be/sparc/gen_sparc_new_nodes.c.inl b/ir/be/sparc/gen_sparc_new_nodes.c.inl deleted file mode 100644 index e9f71b279..000000000 --- a/ir/be/sparc/gen_sparc_new_nodes.c.inl +++ /dev/null @@ -1,1028 +0,0 @@ -#include "gen_sparc_regalloc_if.h" - - -ir_op *op_sparc_SubSP = NULL; -ir_op *op_sparc_Add = NULL; -ir_op *op_sparc_FrameAddr = NULL; -ir_op *op_sparc_Store = NULL; -ir_op *op_sparc_Branch = NULL; -ir_op *op_sparc_Mov = NULL; -ir_op *op_sparc_Tst = NULL; -ir_op *op_sparc_SwitchJmp = NULL; -ir_op *op_sparc_Cmp = NULL; -ir_op *op_sparc_SymConst = NULL; -ir_op *op_sparc_Sub = NULL; -ir_op *op_sparc_Load = NULL; -ir_op *op_sparc_AddSP = NULL; - -ir_op *get_op_sparc_SubSP(void) { return op_sparc_SubSP; } -int is_sparc_SubSP(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_SubSP; } - -ir_op *get_op_sparc_Add(void) { return op_sparc_Add; } -int is_sparc_Add(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_Add; } - -ir_op *get_op_sparc_FrameAddr(void) { return op_sparc_FrameAddr; } -int is_sparc_FrameAddr(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_FrameAddr; } - -ir_op *get_op_sparc_Store(void) { return op_sparc_Store; } -int is_sparc_Store(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_Store; } - -ir_op *get_op_sparc_Branch(void) { return op_sparc_Branch; } -int is_sparc_Branch(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_Branch; } - -ir_op *get_op_sparc_Mov(void) { return op_sparc_Mov; } -int is_sparc_Mov(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_Mov; } - -ir_op *get_op_sparc_Tst(void) { return op_sparc_Tst; } -int is_sparc_Tst(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_Tst; } - -ir_op *get_op_sparc_SwitchJmp(void) { return op_sparc_SwitchJmp; } -int is_sparc_SwitchJmp(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_SwitchJmp; } - -ir_op *get_op_sparc_Cmp(void) { return op_sparc_Cmp; } -int is_sparc_Cmp(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_Cmp; } - -ir_op *get_op_sparc_SymConst(void) { return op_sparc_SymConst; } -int is_sparc_SymConst(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_SymConst; } - -ir_op *get_op_sparc_Sub(void) { return op_sparc_Sub; } -int is_sparc_Sub(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_Sub; } - -ir_op *get_op_sparc_Load(void) { return op_sparc_Load; } -int is_sparc_Load(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_Load; } - -ir_op *get_op_sparc_AddSP(void) { return op_sparc_AddSP; } -int is_sparc_AddSP(const ir_node *n) { return get_sparc_irn_opcode(n) == iro_sparc_AddSP; } - - - -static int sparc_opcode_start = -1; -static int sparc_opcode_end = -1; - - -/** A tag for the sparc opcodes. Note that the address is used as a tag value, NOT the FOURCC code. */ -#define sparc_op_tag FOURCC('S', 'P', 'A', 'R') - -/** Return the opcode number of the first sparc opcode. */ -int get_sparc_opcode_first(void) { - return sparc_opcode_start; -} - -/** Return the opcode number of the last sparc opcode + 1. */ -int get_sparc_opcode_last(void) { - return sparc_opcode_end; -} - -/** Return 1 if the given opcode is a sparc machine op, 0 otherwise */ -int is_sparc_op(const ir_op *op) { - return get_op_tag(op) == sparc_op_tag; -} - -/** Return 1 if the given node is a sparc machine node, 0 otherwise */ -int is_sparc_irn(const ir_node *node) { - return is_sparc_op(get_irn_op(node)); -} - -int get_sparc_irn_opcode(const ir_node *node) { - if (is_sparc_irn(node)) - return get_irn_opcode(node) - sparc_opcode_start; - return -1; -} - -#ifdef BIT -#undef BIT -#endif -#define BIT(x) (1 << (x % 32)) - -static const unsigned sparc_limit_gp_sp[] = { BIT(REG_SP), 0 }; - -static const arch_register_req_t sparc_requirements_gp_sp = { - arch_register_req_type_limited, - & sparc_reg_classes[CLASS_sparc_gp], - sparc_limit_gp_sp, - 0, /* same pos */ - 0 /* different pos */ -}; - - -static const arch_register_req_t sparc_requirements_gp_gp = { - arch_register_req_type_normal, - & sparc_reg_classes[CLASS_sparc_gp], - NULL, /* limit bitset */ - 0, /* same pos */ - 0 /* different pos */ -}; - - -static const arch_register_req_t sparc_requirements_gp_sp_I_S = { - arch_register_req_type_ignore | arch_register_req_type_produces_sp | arch_register_req_type_limited, - & sparc_reg_classes[CLASS_sparc_gp], - sparc_limit_gp_sp, - 0, /* same pos */ - 0 /* different pos */ -}; - - -static const arch_register_req_t sparc_requirements__none = { - arch_register_req_type_none, - NULL, /* regclass */ - NULL, /* limit bitset */ - 0, /* same pos */ - 0 /* different pos */ -}; - - -static const arch_register_req_t sparc_requirements_flags_flags = { - arch_register_req_type_normal, - & sparc_reg_classes[CLASS_sparc_flags], - NULL, /* limit bitset */ - 0, /* same pos */ - 0 /* different pos */ -}; - - - -/** - * free stack space - */ -ir_node *new_bd_sparc_SubSP(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *size, ir_node *mem) -{ - ir_node *res; - ir_op *op = op_sparc_SubSP; - int flags = 0; - backend_info_t *info; - int arity = 3; - ir_node *in[3]; - int n_res = 2; - ir_mode *mode = mode_T; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_sp, - & sparc_requirements_gp_gp, - & sparc_requirements__none, - }; - - /* construct in array */ - in[0] = stack; - in[1] = size; - in[2] = mem; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_sp_I_S; -info->out_infos[1].req = &sparc_requirements__none; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Add node - */ -ir_node *new_bd_sparc_Add_imm(dbg_info *dbgi, ir_node *block, ir_node *left, int immediate_value) -{ - ir_node *res; - ir_op *op = op_sparc_Add; - int flags = 0; - backend_info_t *info; - int arity = 1; - ir_node *in[1]; - int n_res = 1; - ir_mode *mode = mode_Iu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - }; - - /* construct in array */ - in[0] = left; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - sparc_set_attr_imm(res, immediate_value); - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_gp; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Add node - */ -ir_node *new_bd_sparc_Add_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right) -{ - ir_node *res; - ir_op *op = op_sparc_Add; - int flags = 0; - backend_info_t *info; - int arity = 2; - ir_node *in[2]; - int n_res = 1; - ir_mode *mode = mode_Iu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - & sparc_requirements_gp_gp, - }; - - /* construct in array */ - in[0] = left; - in[1] = right; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_gp; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct FrameAddr node - */ -ir_node *new_bd_sparc_FrameAddr(dbg_info *dbgi, ir_node *block, ir_node *base, ir_entity *entity) -{ - ir_node *res; - ir_op *op = op_sparc_FrameAddr; - int flags = 0; - backend_info_t *info; - int arity = 1; - ir_node *in[1]; - int n_res = 1; - ir_mode *mode = mode_Iu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - }; - - /* construct in array */ - in[0] = base; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - init_sparc_symconst_attributes(res, entity); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_gp; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Store: Store(ptr, val, mem) = ST ptr,val - */ -ir_node *new_bd_sparc_Store(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *val, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int entity_sign, long offset, bool is_frame_entity) -{ - ir_node *res; - ir_op *op = op_sparc_Store; - int flags = 0; - backend_info_t *info; - int arity = 3; - ir_node *in[3]; - int n_res = 1; - ir_mode *mode = mode_M; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - & sparc_requirements_gp_gp, - & sparc_requirements__none, - }; - - /* construct in array */ - in[0] = ptr; - in[1] = val; - in[2] = mem; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - init_sparc_load_store_attributes(res, ls_mode, entity, entity_sign, offset, is_frame_entity); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements__none; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Branch node - */ -ir_node *new_bd_sparc_Branch(dbg_info *dbgi, ir_node *block, ir_node *op0, int proj_num) -{ - ir_node *res; - ir_op *op = op_sparc_Branch; - int flags = 0; - backend_info_t *info; - int arity = 1; - ir_node *in[1]; - int n_res = 2; - ir_mode *mode = mode_T; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_flags_flags, - }; - sparc_jmp_cond_attr_t *attr; - - /* construct in array */ - in[0] = op0; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements__none; -info->out_infos[1].req = &sparc_requirements__none; - - - attr = get_irn_generic_attr(res); - set_sparc_jmp_cond_proj_num(res, proj_num); - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Mov node - */ -ir_node *new_bd_sparc_Mov_imm(dbg_info *dbgi, ir_node *block, int immediate_value) -{ - ir_node *res; - ir_op *op = op_sparc_Mov; - int flags = 0; - backend_info_t *info; - int arity = 0; - ir_node **in = NULL; - int n_res = 1; - ir_mode *mode = mode_Iu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t **in_reqs = NULL; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - sparc_set_attr_imm(res, immediate_value); - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_gp; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Mov node - */ -ir_node *new_bd_sparc_Mov_reg(dbg_info *dbgi, ir_node *block, ir_node *op0) -{ - ir_node *res; - ir_op *op = op_sparc_Mov; - int flags = 0; - backend_info_t *info; - int arity = 1; - ir_node *in[1]; - int n_res = 1; - ir_mode *mode = mode_Iu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - }; - - /* construct in array */ - in[0] = op0; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_gp; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Tst node - */ -ir_node *new_bd_sparc_Tst(dbg_info *dbgi, ir_node *block, ir_node *left, bool ins_permuted, bool is_unsigned) -{ - ir_node *res; - ir_op *op = op_sparc_Tst; - int flags = 0; - backend_info_t *info; - int arity = 1; - ir_node *in[1]; - int n_res = 1; - ir_mode *mode = mode_Bu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - }; - - /* construct in array */ - in[0] = left; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - flags |= arch_irn_flags_modify_flags; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - init_sparc_cmp_attr(res, ins_permuted, is_unsigned); - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_flags_flags; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct SwitchJmp node - */ -ir_node *new_bd_sparc_SwitchJmp(dbg_info *dbgi, ir_node *block, ir_node *op0, int n_projs, long def_proj_num) -{ - ir_node *res; - ir_op *op = op_sparc_SwitchJmp; - int flags = 0; - backend_info_t *info; - int arity = 1; - ir_node *in[1]; - int n_res = 1; - ir_mode *mode = mode_T; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - }; - sparc_jmp_switch_attr_t *attr; - - /* construct in array */ - in[0] = op0; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements__none; - - - attr = get_irn_generic_attr(res); - set_sparc_jmp_switch_n_projs(res, n_projs); - set_sparc_jmp_switch_default_proj_num(res, def_proj_num); - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Cmp node - */ -ir_node *new_bd_sparc_Cmp_imm(dbg_info *dbgi, ir_node *block, ir_node *left, int immediate_value, bool ins_permuted, bool is_unsigned) -{ - ir_node *res; - ir_op *op = op_sparc_Cmp; - int flags = 0; - backend_info_t *info; - int arity = 1; - ir_node *in[1]; - int n_res = 1; - ir_mode *mode = mode_Bu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - }; - - /* construct in array */ - in[0] = left; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - flags |= arch_irn_flags_modify_flags; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - sparc_set_attr_imm(res, immediate_value); init_sparc_cmp_attr(res, ins_permuted, is_unsigned); - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_flags_flags; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Cmp node - */ -ir_node *new_bd_sparc_Cmp_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, bool ins_permuted, bool is_unsigned) -{ - ir_node *res; - ir_op *op = op_sparc_Cmp; - int flags = 0; - backend_info_t *info; - int arity = 2; - ir_node *in[2]; - int n_res = 1; - ir_mode *mode = mode_Bu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - & sparc_requirements_gp_gp, - }; - - /* construct in array */ - in[0] = left; - in[1] = right; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - flags |= arch_irn_flags_modify_flags; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - init_sparc_cmp_attr(res, ins_permuted, is_unsigned); - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_flags_flags; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct SymConst node - */ -ir_node *new_bd_sparc_SymConst(dbg_info *dbgi, ir_node *block, ir_entity *entity) -{ - ir_node *res; - ir_op *op = op_sparc_SymConst; - int flags = 0; - backend_info_t *info; - int arity = 0; - ir_node **in = NULL; - int n_res = 1; - ir_mode *mode = mode_Iu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t **in_reqs = NULL; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - init_sparc_symconst_attributes(res, entity); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_gp; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Sub node - */ -ir_node *new_bd_sparc_Sub_imm(dbg_info *dbgi, ir_node *block, ir_node *left, int immediate_value) -{ - ir_node *res; - ir_op *op = op_sparc_Sub; - int flags = 0; - backend_info_t *info; - int arity = 1; - ir_node *in[1]; - int n_res = 1; - ir_mode *mode = mode_Iu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - }; - - /* construct in array */ - in[0] = left; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - sparc_set_attr_imm(res, immediate_value); - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_gp; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Sub node - */ -ir_node *new_bd_sparc_Sub_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right) -{ - ir_node *res; - ir_op *op = op_sparc_Sub; - int flags = 0; - backend_info_t *info; - int arity = 2; - ir_node *in[2]; - int n_res = 1; - ir_mode *mode = mode_Iu; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - & sparc_requirements_gp_gp, - }; - - /* construct in array */ - in[0] = left; - in[1] = right; - - /* flags */ - flags |= arch_irn_flags_rematerializable; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_gp; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * construct Load: Load(ptr, mem) = LD ptr -> reg - */ -ir_node *new_bd_sparc_Load(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int entity_sign, long offset, bool is_frame_entity) -{ - ir_node *res; - ir_op *op = op_sparc_Load; - int flags = 0; - backend_info_t *info; - int arity = 2; - ir_node *in[2]; - int n_res = 2; - ir_mode *mode = mode_T; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_gp, - & sparc_requirements__none, - }; - - /* construct in array */ - in[0] = ptr; - in[1] = mem; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - init_sparc_load_store_attributes(res, ls_mode, entity, entity_sign, offset, is_frame_entity); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_gp; -info->out_infos[1].req = &sparc_requirements__none; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - -/** - * alloc stack space - */ -ir_node *new_bd_sparc_AddSP(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *size, ir_node *mem) -{ - ir_node *res; - ir_op *op = op_sparc_AddSP; - int flags = 0; - backend_info_t *info; - int arity = 3; - ir_node *in[3]; - int n_res = 3; - ir_mode *mode = mode_T; - static const be_execution_unit_t ***exec_units = NULL; - static const arch_register_req_t *in_reqs[] = - { - & sparc_requirements_gp_sp, - & sparc_requirements_gp_gp, - & sparc_requirements__none, - }; - - /* construct in array */ - in[0] = stack; - in[1] = size; - in[2] = mem; - - /* create node */ - assert(op != NULL); - res = new_ir_node(dbgi, current_ir_graph, block, op, mode, arity, in); - - /* init node attributes */ - init_sparc_attributes(res, flags, in_reqs, exec_units, n_res); - - info = be_get_info(res); - info->out_infos[0].req = &sparc_requirements_gp_sp_I_S; -info->out_infos[1].req = &sparc_requirements_gp_gp; -info->out_infos[2].req = &sparc_requirements__none; - - - /* optimize node */ - res = optimize_node(res); - irn_vrfy_irg(res, current_ir_graph); - - return res; -} - - - -/** - * Creates the sparc specific Firm machine operations - * needed for the assembler irgs. - */ -void sparc_create_opcodes(const arch_irn_ops_t *be_ops) { -#define N irop_flag_none -#define L irop_flag_labeled -#define C irop_flag_commutative -#define X irop_flag_cfopcode -#define I irop_flag_ip_cfopcode -#define F irop_flag_fragile -#define Y irop_flag_forking -#define H irop_flag_highlevel -#define c irop_flag_constlike -#define K irop_flag_keep -#define M irop_flag_machine -#define O irop_flag_machine_op -#define NB irop_flag_dump_noblock -#define NI irop_flag_dump_noinput -#define R (irop_flag_user << 0) - - ir_op_ops ops; - int cur_opcode; - static int run_once = 0; - - if (run_once) - return; - run_once = 1; - - cur_opcode = get_next_ir_opcodes(iro_sparc_last); - - sparc_opcode_start = cur_opcode; - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc; - ops.copy_attr = sparc_copy_attr; - op_sparc_SubSP = new_ir_op(cur_opcode + iro_sparc_SubSP, "sparc_SubSP", op_pin_state_floats, N|M, oparity_trinary, 0, sizeof(sparc_attr_t), &ops); - set_op_tag(op_sparc_SubSP, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc; - ops.copy_attr = sparc_copy_attr; - op_sparc_Add = new_ir_op(cur_opcode + iro_sparc_Add, "sparc_Add", op_pin_state_floats, C|M, oparity_zero, 0, sizeof(sparc_attr_t), &ops); - set_op_tag(op_sparc_Add, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc_symconst; - ops.copy_attr = sparc_copy_attr; - op_sparc_FrameAddr = new_ir_op(cur_opcode + iro_sparc_FrameAddr, "sparc_FrameAddr", op_pin_state_floats, c|M, oparity_unary, 0, sizeof(sparc_symconst_attr_t), &ops); - set_op_tag(op_sparc_FrameAddr, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc_load_store; - ops.copy_attr = sparc_copy_attr; - op_sparc_Store = new_ir_op(cur_opcode + iro_sparc_Store, "sparc_Store", op_pin_state_exc_pinned, L|F|M, oparity_trinary, 0, sizeof(sparc_load_store_attr_t), &ops); - set_op_tag(op_sparc_Store, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc_jmp_cond; - ops.copy_attr = sparc_copy_attr; - op_sparc_Branch = new_ir_op(cur_opcode + iro_sparc_Branch, "sparc_Branch", op_pin_state_pinned, L|X|Y|M, oparity_unary, 0, sizeof(sparc_jmp_cond_attr_t), &ops); - set_op_tag(op_sparc_Branch, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc; - ops.copy_attr = sparc_copy_attr; - op_sparc_Mov = new_ir_op(cur_opcode + iro_sparc_Mov, "sparc_Mov", op_pin_state_floats, N|M, oparity_variable, 0, sizeof(sparc_attr_t), &ops); - set_op_tag(op_sparc_Mov, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc_cmp; - ops.copy_attr = sparc_copy_attr; - op_sparc_Tst = new_ir_op(cur_opcode + iro_sparc_Tst, "sparc_Tst", op_pin_state_floats, N|M, oparity_unary, 0, sizeof(sparc_cmp_attr_t), &ops); - set_op_tag(op_sparc_Tst, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc_jmp_switch; - ops.copy_attr = sparc_copy_attr; - op_sparc_SwitchJmp = new_ir_op(cur_opcode + iro_sparc_SwitchJmp, "sparc_SwitchJmp", op_pin_state_pinned, L|X|Y|M, oparity_unary, 0, sizeof(sparc_jmp_switch_attr_t), &ops); - set_op_tag(op_sparc_SwitchJmp, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc_cmp; - ops.copy_attr = sparc_copy_attr; - op_sparc_Cmp = new_ir_op(cur_opcode + iro_sparc_Cmp, "sparc_Cmp", op_pin_state_floats, N|M, oparity_zero, 0, sizeof(sparc_cmp_attr_t), &ops); - set_op_tag(op_sparc_Cmp, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc_symconst; - ops.copy_attr = sparc_copy_attr; - op_sparc_SymConst = new_ir_op(cur_opcode + iro_sparc_SymConst, "sparc_SymConst", op_pin_state_floats, c|M, oparity_zero, 0, sizeof(sparc_symconst_attr_t), &ops); - set_op_tag(op_sparc_SymConst, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc; - ops.copy_attr = sparc_copy_attr; - op_sparc_Sub = new_ir_op(cur_opcode + iro_sparc_Sub, "sparc_Sub", op_pin_state_floats, N|M, oparity_binary, 0, sizeof(sparc_attr_t), &ops); - set_op_tag(op_sparc_Sub, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc_load_store; - ops.copy_attr = sparc_copy_attr; - op_sparc_Load = new_ir_op(cur_opcode + iro_sparc_Load, "sparc_Load", op_pin_state_exc_pinned, L|F|M, oparity_binary, 0, sizeof(sparc_load_store_attr_t), &ops); - set_op_tag(op_sparc_Load, sparc_op_tag); - - memset(&ops, 0, sizeof(ops)); - ops.be_ops = be_ops; - ops.dump_node = sparc_dump_node; - ops.node_cmp_attr = cmp_attr_sparc; - ops.copy_attr = sparc_copy_attr; - op_sparc_AddSP = new_ir_op(cur_opcode + iro_sparc_AddSP, "sparc_AddSP", op_pin_state_floats, N|M, oparity_trinary, 0, sizeof(sparc_attr_t), &ops); - set_op_tag(op_sparc_AddSP, sparc_op_tag); - - sparc_opcode_end = cur_opcode + iro_sparc_last; -} diff --git a/ir/be/sparc/gen_sparc_new_nodes.h b/ir/be/sparc/gen_sparc_new_nodes.h deleted file mode 100644 index 164bb55df..000000000 --- a/ir/be/sparc/gen_sparc_new_nodes.h +++ /dev/null @@ -1,210 +0,0 @@ -/** - * @file - * @brief Function prototypes for the new opcode functions. - * @note DO NOT EDIT THIS FILE, your changes will be lost. - * Edit libfirm/ir/be/sparc/sparc_spec.pl instead. - * created by: libfirm/ir/be/scripts/generate_new_opcodes.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc - * @date Tue Dec 15 15:19:15 2009 - */ -#ifndef FIRM_BE_SPARC_GEN_SPARC_NEW_NODES_H -#define FIRM_BE_SPARC_GEN_SPARC_NEW_NODES_H - -typedef enum _sparc_opcodes { - iro_sparc_SubSP, - iro_sparc_Add, - iro_sparc_FrameAddr, - iro_sparc_Store, - iro_sparc_Branch, - iro_sparc_Mov, - iro_sparc_Tst, - iro_sparc_SwitchJmp, - iro_sparc_Cmp, - iro_sparc_SymConst, - iro_sparc_Sub, - iro_sparc_Load, - iro_sparc_AddSP, - iro_sparc_last_generated, - iro_sparc_last = iro_sparc_last_generated -} sparc_opcodes; - -int is_sparc_irn(const ir_node *node); - -int get_sparc_opcode_first(void); -int get_sparc_opcode_last(void); -int get_sparc_irn_opcode(const ir_node *node); -void sparc_create_opcodes(const arch_irn_ops_t *be_ops); -extern ir_op *op_sparc_SubSP; -ir_op *get_op_sparc_SubSP(void); -int is_sparc_SubSP(const ir_node *n); -/** - * free stack space - */ -ir_node *new_bd_sparc_SubSP(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *size, ir_node *mem); - -extern ir_op *op_sparc_Add; -ir_op *get_op_sparc_Add(void); -int is_sparc_Add(const ir_node *n); -/** - * construct Add node - */ -ir_node *new_bd_sparc_Add_imm(dbg_info *dbgi, ir_node *block, ir_node *left, int immediate_value); -/** - * construct Add node - */ -ir_node *new_bd_sparc_Add_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); - -extern ir_op *op_sparc_FrameAddr; -ir_op *get_op_sparc_FrameAddr(void); -int is_sparc_FrameAddr(const ir_node *n); -/** - * construct FrameAddr node - */ -ir_node *new_bd_sparc_FrameAddr(dbg_info *dbgi, ir_node *block, ir_node *base, ir_entity *entity); - -extern ir_op *op_sparc_Store; -ir_op *get_op_sparc_Store(void); -int is_sparc_Store(const ir_node *n); -/** - * construct Store: Store(ptr, val, mem) = ST ptr,val - */ -ir_node *new_bd_sparc_Store(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *val, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int entity_sign, long offset, bool is_frame_entity); - -extern ir_op *op_sparc_Branch; -ir_op *get_op_sparc_Branch(void); -int is_sparc_Branch(const ir_node *n); -/** - * construct Branch node - */ -ir_node *new_bd_sparc_Branch(dbg_info *dbgi, ir_node *block, ir_node *op0, int proj_num); - -extern ir_op *op_sparc_Mov; -ir_op *get_op_sparc_Mov(void); -int is_sparc_Mov(const ir_node *n); -/** - * construct Mov node - */ -ir_node *new_bd_sparc_Mov_imm(dbg_info *dbgi, ir_node *block, int immediate_value); -/** - * construct Mov node - */ -ir_node *new_bd_sparc_Mov_reg(dbg_info *dbgi, ir_node *block, ir_node *op0); - -extern ir_op *op_sparc_Tst; -ir_op *get_op_sparc_Tst(void); -int is_sparc_Tst(const ir_node *n); -/** - * construct Tst node - */ -ir_node *new_bd_sparc_Tst(dbg_info *dbgi, ir_node *block, ir_node *left, bool ins_permuted, bool is_unsigned); - -extern ir_op *op_sparc_SwitchJmp; -ir_op *get_op_sparc_SwitchJmp(void); -int is_sparc_SwitchJmp(const ir_node *n); -/** - * construct SwitchJmp node - */ -ir_node *new_bd_sparc_SwitchJmp(dbg_info *dbgi, ir_node *block, ir_node *op0, int n_projs, long def_proj_num); - -extern ir_op *op_sparc_Cmp; -ir_op *get_op_sparc_Cmp(void); -int is_sparc_Cmp(const ir_node *n); -/** - * construct Cmp node - */ -ir_node *new_bd_sparc_Cmp_imm(dbg_info *dbgi, ir_node *block, ir_node *left, int immediate_value, bool ins_permuted, bool is_unsigned); -/** - * construct Cmp node - */ -ir_node *new_bd_sparc_Cmp_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right, bool ins_permuted, bool is_unsigned); - -extern ir_op *op_sparc_SymConst; -ir_op *get_op_sparc_SymConst(void); -int is_sparc_SymConst(const ir_node *n); -/** - * construct SymConst node - */ -ir_node *new_bd_sparc_SymConst(dbg_info *dbgi, ir_node *block, ir_entity *entity); - -extern ir_op *op_sparc_Sub; -ir_op *get_op_sparc_Sub(void); -int is_sparc_Sub(const ir_node *n); -/** - * construct Sub node - */ -ir_node *new_bd_sparc_Sub_imm(dbg_info *dbgi, ir_node *block, ir_node *left, int immediate_value); -/** - * construct Sub node - */ -ir_node *new_bd_sparc_Sub_reg(dbg_info *dbgi, ir_node *block, ir_node *left, ir_node *right); - -extern ir_op *op_sparc_Load; -ir_op *get_op_sparc_Load(void); -int is_sparc_Load(const ir_node *n); -/** - * construct Load: Load(ptr, mem) = LD ptr -> reg - */ -ir_node *new_bd_sparc_Load(dbg_info *dbgi, ir_node *block, ir_node *ptr, ir_node *mem, ir_mode *ls_mode, ir_entity *entity, int entity_sign, long offset, bool is_frame_entity); - -extern ir_op *op_sparc_AddSP; -ir_op *get_op_sparc_AddSP(void); -int is_sparc_AddSP(const ir_node *n); -/** - * alloc stack space - */ -ir_node *new_bd_sparc_AddSP(dbg_info *dbgi, ir_node *block, ir_node *stack, ir_node *size, ir_node *mem); - - - -enum pn_sparc_SubSP { - pn_sparc_SubSP_stack = 0, - pn_sparc_SubSP_M = 1, -}; - -enum n_sparc_SubSP { - n_sparc_SubSP_stack = 0, - n_sparc_SubSP_size = 1, - n_sparc_SubSP_mem = 2, -}; - -enum n_sparc_FrameAddr { - n_sparc_FrameAddr_base = 0, -}; - -enum pn_sparc_Store { - pn_sparc_Store_mem = 0, -}; - -enum n_sparc_Store { - n_sparc_Store_ptr = 0, - n_sparc_Store_val = 1, - n_sparc_Store_mem = 2, -}; - -enum n_sparc_Tst { - n_sparc_Tst_left = 0, -}; - -enum pn_sparc_Load { - pn_sparc_Load_res = 0, - pn_sparc_Load_M = 1, -}; - -enum n_sparc_Load { - n_sparc_Load_ptr = 0, - n_sparc_Load_mem = 1, -}; - -enum pn_sparc_AddSP { - pn_sparc_AddSP_stack = 0, - pn_sparc_AddSP_addr = 1, - pn_sparc_AddSP_M = 2, -}; - -enum n_sparc_AddSP { - n_sparc_AddSP_stack = 0, - n_sparc_AddSP_size = 1, - n_sparc_AddSP_mem = 2, -}; - - -#endif diff --git a/ir/be/sparc/gen_sparc_regalloc_if.c b/ir/be/sparc/gen_sparc_regalloc_if.c deleted file mode 100644 index 13951ae3b..000000000 --- a/ir/be/sparc/gen_sparc_regalloc_if.c +++ /dev/null @@ -1,1039 +0,0 @@ -/** - * @file - * @brief The generated interface for the register allocator. - * Contains register classes and types and register constraints - * for all nodes where constraints were given in spec. - * @note DO NOT EDIT THIS FILE, your changes will be lost. - * Edit libfirm/ir/be/sparc/sparc_spec.pl instead. - * created by: libfirm/ir/be/scripts/generate_regalloc_if.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc - * $date Tue Dec 15 15:19:15 2009 - */ -#include "config.h" - -#include "gen_sparc_regalloc_if.h" -#include "gen_sparc_machine.h" -#include "bearch_sparc_t.h" -#include "irmode.h" - -static const arch_register_req_t sparc_class_reg_req_flags; -static const arch_register_req_t sparc_class_reg_req_gp; -static const arch_register_req_t sparc_class_reg_req_fp; - -arch_register_class_t sparc_reg_classes[] = { - { 0, "sparc_flags", N_sparc_flags_REGS, NULL, sparc_flags_regs, arch_register_class_flag_manual_ra, &sparc_class_reg_req_flags }, - { 1, "sparc_gp", N_sparc_gp_REGS, NULL, sparc_gp_regs, 0, &sparc_class_reg_req_gp }, - { 2, "sparc_fp", N_sparc_fp_REGS, NULL, sparc_fp_regs, 0, &sparc_class_reg_req_fp } -}; - -static const arch_register_req_t sparc_class_reg_req_flags = { - arch_register_req_type_normal, - &sparc_reg_classes[CLASS_sparc_flags], - NULL, - 0, - 0 -}; -static const unsigned sparc_limited_flags_y [] = { (1 << REG_Y) }; -static const arch_register_req_t sparc_single_reg_req_flags_y = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_flags], - sparc_limited_flags_y, - 0, - 0 -}; -static const arch_register_req_t sparc_class_reg_req_gp = { - arch_register_req_type_normal, - &sparc_reg_classes[CLASS_sparc_gp], - NULL, - 0, - 0 -}; -static const unsigned sparc_limited_gp_g0 [] = { (1 << REG_G0), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_g0 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_g0, - 0, - 0 -}; -static const unsigned sparc_limited_gp_g1 [] = { (1 << REG_G1), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_g1 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_g1, - 0, - 0 -}; -static const unsigned sparc_limited_gp_g2 [] = { (1 << REG_G2), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_g2 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_g2, - 0, - 0 -}; -static const unsigned sparc_limited_gp_g3 [] = { (1 << REG_G3), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_g3 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_g3, - 0, - 0 -}; -static const unsigned sparc_limited_gp_g4 [] = { (1 << REG_G4), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_g4 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_g4, - 0, - 0 -}; -static const unsigned sparc_limited_gp_g5 [] = { (1 << REG_G5), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_g5 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_g5, - 0, - 0 -}; -static const unsigned sparc_limited_gp_g6 [] = { (1 << REG_G6), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_g6 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_g6, - 0, - 0 -}; -static const unsigned sparc_limited_gp_g7 [] = { (1 << REG_G7), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_g7 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_g7, - 0, - 0 -}; -static const unsigned sparc_limited_gp_o0 [] = { (1 << REG_O0), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_o0 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_o0, - 0, - 0 -}; -static const unsigned sparc_limited_gp_o1 [] = { (1 << REG_O1), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_o1 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_o1, - 0, - 0 -}; -static const unsigned sparc_limited_gp_o2 [] = { (1 << REG_O2), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_o2 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_o2, - 0, - 0 -}; -static const unsigned sparc_limited_gp_o3 [] = { (1 << REG_O3), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_o3 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_o3, - 0, - 0 -}; -static const unsigned sparc_limited_gp_o4 [] = { (1 << REG_O4), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_o4 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_o4, - 0, - 0 -}; -static const unsigned sparc_limited_gp_o5 [] = { (1 << REG_O5), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_o5 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_o5, - 0, - 0 -}; -static const unsigned sparc_limited_gp_sp [] = { (1 << REG_SP), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_sp = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_sp, - 0, - 0 -}; -static const unsigned sparc_limited_gp_o7 [] = { (1 << REG_O7), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_o7 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_o7, - 0, - 0 -}; -static const unsigned sparc_limited_gp_l0 [] = { (1 << REG_L0), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_l0 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_l0, - 0, - 0 -}; -static const unsigned sparc_limited_gp_l1 [] = { (1 << REG_L1), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_l1 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_l1, - 0, - 0 -}; -static const unsigned sparc_limited_gp_l2 [] = { (1 << REG_L2), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_l2 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_l2, - 0, - 0 -}; -static const unsigned sparc_limited_gp_l3 [] = { (1 << REG_L3), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_l3 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_l3, - 0, - 0 -}; -static const unsigned sparc_limited_gp_l4 [] = { (1 << REG_L4), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_l4 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_l4, - 0, - 0 -}; -static const unsigned sparc_limited_gp_l5 [] = { (1 << REG_L5), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_l5 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_l5, - 0, - 0 -}; -static const unsigned sparc_limited_gp_l6 [] = { (1 << REG_L6), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_l6 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_l6, - 0, - 0 -}; -static const unsigned sparc_limited_gp_l7 [] = { (1 << REG_L7), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_l7 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_l7, - 0, - 0 -}; -static const unsigned sparc_limited_gp_i0 [] = { (1 << REG_I0), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_i0 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_i0, - 0, - 0 -}; -static const unsigned sparc_limited_gp_i1 [] = { (1 << REG_I1), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_i1 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_i1, - 0, - 0 -}; -static const unsigned sparc_limited_gp_i2 [] = { (1 << REG_I2), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_i2 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_i2, - 0, - 0 -}; -static const unsigned sparc_limited_gp_i3 [] = { (1 << REG_I3), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_i3 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_i3, - 0, - 0 -}; -static const unsigned sparc_limited_gp_i4 [] = { (1 << REG_I4), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_i4 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_i4, - 0, - 0 -}; -static const unsigned sparc_limited_gp_i5 [] = { (1 << REG_I5), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_i5 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_i5, - 0, - 0 -}; -static const unsigned sparc_limited_gp_fp [] = { (1 << REG_FP), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_fp = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_fp, - 0, - 0 -}; -static const unsigned sparc_limited_gp_i7 [] = { (1 << REG_I7), 0 }; -static const arch_register_req_t sparc_single_reg_req_gp_i7 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_gp], - sparc_limited_gp_i7, - 0, - 0 -}; -static const arch_register_req_t sparc_class_reg_req_fp = { - arch_register_req_type_normal, - &sparc_reg_classes[CLASS_sparc_fp], - NULL, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f0 [] = { (1 << REG_F0), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f0 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f0, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f1 [] = { (1 << REG_F1), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f1 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f1, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f2 [] = { (1 << REG_F2), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f2 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f2, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f3 [] = { (1 << REG_F3), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f3 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f3, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f4 [] = { (1 << REG_F4), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f4 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f4, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f5 [] = { (1 << REG_F5), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f5 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f5, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f6 [] = { (1 << REG_F6), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f6 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f6, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f7 [] = { (1 << REG_F7), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f7 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f7, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f8 [] = { (1 << REG_F8), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f8 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f8, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f9 [] = { (1 << REG_F9), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f9 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f9, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f10 [] = { (1 << REG_F10), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f10 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f10, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f11 [] = { (1 << REG_F11), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f11 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f11, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f12 [] = { (1 << REG_F12), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f12 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f12, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f13 [] = { (1 << REG_F13), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f13 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f13, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f14 [] = { (1 << REG_F14), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f14 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f14, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f15 [] = { (1 << REG_F15), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f15 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f15, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f16 [] = { (1 << REG_F16), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f16 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f16, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f17 [] = { (1 << REG_F17), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f17 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f17, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f18 [] = { (1 << REG_F18), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f18 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f18, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f19 [] = { (1 << REG_F19), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f19 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f19, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f20 [] = { (1 << REG_F20), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f20 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f20, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f21 [] = { (1 << REG_F21), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f21 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f21, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f22 [] = { (1 << REG_F22), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f22 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f22, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f23 [] = { (1 << REG_F23), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f23 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f23, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f24 [] = { (1 << REG_F24), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f24 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f24, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f25 [] = { (1 << REG_F25), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f25 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f25, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f26 [] = { (1 << REG_F26), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f26 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f26, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f27 [] = { (1 << REG_F27), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f27 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f27, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f28 [] = { (1 << REG_F28), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f28 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f28, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f29 [] = { (1 << REG_F29), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f29 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f29, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f30 [] = { (1 << REG_F30), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f30 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f30, - 0, - 0 -}; -static const unsigned sparc_limited_fp_f31 [] = { (1 << REG_F31), 0 }; -static const arch_register_req_t sparc_single_reg_req_fp_f31 = { - arch_register_req_type_limited, - &sparc_reg_classes[CLASS_sparc_fp], - sparc_limited_fp_f31, - 0, - 0 -}; - -const arch_register_t sparc_flags_regs[N_sparc_flags_REGS] = { - { - "y", - &sparc_reg_classes[CLASS_sparc_flags], - REG_Y, - arch_register_type_ignore, - &sparc_single_reg_req_flags_y - }, -}; -const arch_register_t sparc_gp_regs[N_sparc_gp_REGS] = { - { - "r0", - &sparc_reg_classes[CLASS_sparc_gp], - REG_G0, - arch_register_type_ignore, - &sparc_single_reg_req_gp_g0 - }, - { - "r1", - &sparc_reg_classes[CLASS_sparc_gp], - REG_G1, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_g1 - }, - { - "r2", - &sparc_reg_classes[CLASS_sparc_gp], - REG_G2, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_g2 - }, - { - "r3", - &sparc_reg_classes[CLASS_sparc_gp], - REG_G3, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_g3 - }, - { - "r4", - &sparc_reg_classes[CLASS_sparc_gp], - REG_G4, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_g4 - }, - { - "r5", - &sparc_reg_classes[CLASS_sparc_gp], - REG_G5, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_g5 - }, - { - "r6", - &sparc_reg_classes[CLASS_sparc_gp], - REG_G6, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_g6 - }, - { - "r7", - &sparc_reg_classes[CLASS_sparc_gp], - REG_G7, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_g7 - }, - { - "r8", - &sparc_reg_classes[CLASS_sparc_gp], - REG_O0, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_o0 - }, - { - "r9", - &sparc_reg_classes[CLASS_sparc_gp], - REG_O1, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_o1 - }, - { - "r10", - &sparc_reg_classes[CLASS_sparc_gp], - REG_O2, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_o2 - }, - { - "r11", - &sparc_reg_classes[CLASS_sparc_gp], - REG_O3, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_o3 - }, - { - "r12", - &sparc_reg_classes[CLASS_sparc_gp], - REG_O4, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_o4 - }, - { - "r13", - &sparc_reg_classes[CLASS_sparc_gp], - REG_O5, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_o5 - }, - { - "r14", - &sparc_reg_classes[CLASS_sparc_gp], - REG_SP, - arch_register_type_ignore, - &sparc_single_reg_req_gp_sp - }, - { - "r15", - &sparc_reg_classes[CLASS_sparc_gp], - REG_O7, - arch_register_type_caller_save, - &sparc_single_reg_req_gp_o7 - }, - { - "r16", - &sparc_reg_classes[CLASS_sparc_gp], - REG_L0, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_l0 - }, - { - "r17", - &sparc_reg_classes[CLASS_sparc_gp], - REG_L1, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_l1 - }, - { - "r18", - &sparc_reg_classes[CLASS_sparc_gp], - REG_L2, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_l2 - }, - { - "r19", - &sparc_reg_classes[CLASS_sparc_gp], - REG_L3, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_l3 - }, - { - "r20", - &sparc_reg_classes[CLASS_sparc_gp], - REG_L4, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_l4 - }, - { - "r21", - &sparc_reg_classes[CLASS_sparc_gp], - REG_L5, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_l5 - }, - { - "r22", - &sparc_reg_classes[CLASS_sparc_gp], - REG_L6, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_l6 - }, - { - "r23", - &sparc_reg_classes[CLASS_sparc_gp], - REG_L7, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_l7 - }, - { - "r24", - &sparc_reg_classes[CLASS_sparc_gp], - REG_I0, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_i0 - }, - { - "r25", - &sparc_reg_classes[CLASS_sparc_gp], - REG_I1, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_i1 - }, - { - "r26", - &sparc_reg_classes[CLASS_sparc_gp], - REG_I2, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_i2 - }, - { - "r27", - &sparc_reg_classes[CLASS_sparc_gp], - REG_I3, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_i3 - }, - { - "r28", - &sparc_reg_classes[CLASS_sparc_gp], - REG_I4, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_i4 - }, - { - "r29", - &sparc_reg_classes[CLASS_sparc_gp], - REG_I5, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_i5 - }, - { - "r30", - &sparc_reg_classes[CLASS_sparc_gp], - REG_FP, - arch_register_type_ignore, - &sparc_single_reg_req_gp_fp - }, - { - "r31", - &sparc_reg_classes[CLASS_sparc_gp], - REG_I7, - arch_register_type_callee_save, - &sparc_single_reg_req_gp_i7 - }, -}; -const arch_register_t sparc_fp_regs[N_sparc_fp_REGS] = { - { - "f0", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F0, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f0 - }, - { - "f1", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F1, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f1 - }, - { - "f2", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F2, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f2 - }, - { - "f3", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F3, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f3 - }, - { - "f4", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F4, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f4 - }, - { - "f5", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F5, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f5 - }, - { - "f6", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F6, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f6 - }, - { - "f7", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F7, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f7 - }, - { - "f8", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F8, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f8 - }, - { - "f9", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F9, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f9 - }, - { - "f10", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F10, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f10 - }, - { - "f11", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F11, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f11 - }, - { - "f12", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F12, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f12 - }, - { - "f13", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F13, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f13 - }, - { - "f14", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F14, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f14 - }, - { - "f15", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F15, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f15 - }, - { - "f16", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F16, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f16 - }, - { - "f17", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F17, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f17 - }, - { - "f18", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F18, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f18 - }, - { - "f19", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F19, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f19 - }, - { - "f20", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F20, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f20 - }, - { - "f21", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F21, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f21 - }, - { - "f22", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F22, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f22 - }, - { - "f23", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F23, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f23 - }, - { - "f24", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F24, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f24 - }, - { - "f25", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F25, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f25 - }, - { - "f26", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F26, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f26 - }, - { - "f27", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F27, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f27 - }, - { - "f28", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F28, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f28 - }, - { - "f29", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F29, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f29 - }, - { - "f30", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F30, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f30 - }, - { - "f31", - &sparc_reg_classes[CLASS_sparc_fp], - REG_F31, - arch_register_type_caller_save, - &sparc_single_reg_req_fp_f31 - }, -}; - - -void sparc_register_init(void) -{ - sparc_reg_classes[CLASS_sparc_flags].mode = mode_Bu; - sparc_reg_classes[CLASS_sparc_gp].mode = mode_Iu; - sparc_reg_classes[CLASS_sparc_fp].mode = mode_D; - -} diff --git a/ir/be/sparc/gen_sparc_regalloc_if.h b/ir/be/sparc/gen_sparc_regalloc_if.h deleted file mode 100644 index 3b5bcc9b1..000000000 --- a/ir/be/sparc/gen_sparc_regalloc_if.h +++ /dev/null @@ -1,111 +0,0 @@ -/** - * @file - * @brief Contains additional external requirements defs for external includes. - * @note DO NOT EDIT THIS FILE, your changes will be lost. - * Edit libfirm/ir/be/sparc/sparc_spec.pl instead. - * created by: libfirm/ir/be/scripts/generate_regalloc_if.pl libfirm/ir/be/sparc/sparc_spec.pl libfirm/ir/be/sparc - * @date Tue Dec 15 15:19:15 2009 - */ -#ifndef FIRM_BE_SPARC_GEN_SPARC_REGALLOC_IF_H -#define FIRM_BE_SPARC_GEN_SPARC_REGALLOC_IF_H - -#include "../bearch.h" -#include "sparc_nodes_attr.h" - -enum reg_sparc_flags_indices { - REG_Y, - N_sparc_flags_REGS = 1 -}; - -enum reg_sparc_gp_indices { - REG_G0, - REG_G1, - REG_G2, - REG_G3, - REG_G4, - REG_G5, - REG_G6, - REG_G7, - REG_O0, - REG_O1, - REG_O2, - REG_O3, - REG_O4, - REG_O5, - REG_SP, - REG_O7, - REG_L0, - REG_L1, - REG_L2, - REG_L3, - REG_L4, - REG_L5, - REG_L6, - REG_L7, - REG_I0, - REG_I1, - REG_I2, - REG_I3, - REG_I4, - REG_I5, - REG_FP, - REG_I7, - N_sparc_gp_REGS = 32 -}; - -enum reg_sparc_fp_indices { - REG_F0, - REG_F1, - REG_F2, - REG_F3, - REG_F4, - REG_F5, - REG_F6, - REG_F7, - REG_F8, - REG_F9, - REG_F10, - REG_F11, - REG_F12, - REG_F13, - REG_F14, - REG_F15, - REG_F16, - REG_F17, - REG_F18, - REG_F19, - REG_F20, - REG_F21, - REG_F22, - REG_F23, - REG_F24, - REG_F25, - REG_F26, - REG_F27, - REG_F28, - REG_F29, - REG_F30, - REG_F31, - N_sparc_fp_REGS = 32 -}; - - -enum reg_classes { - CLASS_sparc_flags = 0, - CLASS_sparc_gp = 1, - CLASS_sparc_fp = 2, - N_CLASSES = 3 -}; - - -extern const arch_register_t sparc_flags_regs[N_sparc_flags_REGS]; -extern const arch_register_t sparc_gp_regs[N_sparc_gp_REGS]; -extern const arch_register_t sparc_fp_regs[N_sparc_fp_REGS]; - - -extern arch_register_class_t sparc_reg_classes[N_CLASSES]; - -void sparc_register_init(void); -unsigned sparc_get_n_regs(void); - -#endif