+++ /dev/null
-/**
- * @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 <stdio.h>
-
-#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
-}
+++ /dev/null
-/**
- * @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
+++ /dev/null
-/**
- * @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;
-}
+++ /dev/null
-/**
- * @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
+++ /dev/null
-#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;
-}
+++ /dev/null
-/**
- * @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
+++ /dev/null
-/**
- * @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;
-
-}
+++ /dev/null
-/**
- * @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