projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
begnuas: let user specify elf variants
[libfirm]
/
ir
/
be
/
sparc
/
sparc_new_nodes.c
diff --git
a/ir/be/sparc/sparc_new_nodes.c
b/ir/be/sparc/sparc_new_nodes.c
index
b4564bc
..
558872e
100644
(file)
--- a/
ir/be/sparc/sparc_new_nodes.c
+++ b/
ir/be/sparc/sparc_new_nodes.c
@@
-22,6
+22,7
@@
* @brief This file implements the creation of the achitecture specific firm
* opcodes and the coresponding node constructors for the sparc
* assembler irg.
* @brief This file implements the creation of the achitecture specific firm
* opcodes and the coresponding node constructors for the sparc
* assembler irg.
+ * @author Hannes Rapp, Matthias Braun
* @version $Id$
*/
#include "config.h"
* @version $Id$
*/
#include "config.h"
@@
-81,7
+82,7
@@
static bool has_fp_conv_attr(const ir_node *node)
*/
static void sparc_dump_node(FILE *F, ir_node *n, dump_reason_t reason)
{
*/
static void sparc_dump_node(FILE *F, ir_node *n, dump_reason_t reason)
{
- const sparc_attr_t *attr;
+ const sparc_attr_t *
sparc_
attr;
switch (reason) {
case dump_node_opcode_txt:
switch (reason) {
case dump_node_opcode_txt:
@@
-92,13
+93,17
@@
static void sparc_dump_node(FILE *F, ir_node *n, dump_reason_t reason)
break;
case dump_node_info_txt:
break;
case dump_node_info_txt:
+ if (is_sparc_AddX_t(n) || is_sparc_AddCC_t(n))
+ break;
+
arch_dump_reqs_and_registers(F, n);
arch_dump_reqs_and_registers(F, n);
- attr = get_sparc_attr_const(n);
- if (attr->immediate_value_entity) {
+
sparc_
attr = get_sparc_attr_const(n);
+ if (
sparc_
attr->immediate_value_entity) {
ir_fprintf(F, "entity: %+F (offset %d)\n",
ir_fprintf(F, "entity: %+F (offset %d)\n",
- attr->immediate_value_entity, attr->immediate_value);
+ sparc_attr->immediate_value_entity,
+ sparc_attr->immediate_value);
} else {
} else {
- ir_fprintf(F, "immediate value: %d\n", attr->immediate_value);
+ ir_fprintf(F, "immediate value: %d\n",
sparc_
attr->immediate_value);
}
if (sparc_has_load_store_attr(n)) {
const sparc_load_store_attr_t *attr = get_sparc_load_store_attr_const(n);
}
if (sparc_has_load_store_attr(n)) {
const sparc_load_store_attr_t *attr = get_sparc_load_store_attr_const(n);
@@
-109,7
+114,8
@@
static void sparc_dump_node(FILE *F, ir_node *n, dump_reason_t reason)
if (has_jmp_cond_attr(n)) {
const sparc_jmp_cond_attr_t *attr
= get_sparc_jmp_cond_attr_const(n);
if (has_jmp_cond_attr(n)) {
const sparc_jmp_cond_attr_t *attr
= get_sparc_jmp_cond_attr_const(n);
- fprintf(F, "pnc: %d (%s)\n", attr->pnc, get_pnc_string(attr->pnc));
+ fprintf(F, "relation: %d (%s)\n", (int)attr->relation,
+ get_relation_string(attr->relation));
fprintf(F, "unsigned: %s\n", attr->is_unsigned ? "true" : "false");
}
if (has_switch_jmp_attr(n)) {
fprintf(F, "unsigned: %s\n", attr->is_unsigned ? "true" : "false");
}
if (has_switch_jmp_attr(n)) {
@@
-139,12
+145,14
@@
static void sparc_set_attr_imm(ir_node *res, ir_entity *entity,
sparc_attr_t *attr = (sparc_attr_t*)get_irn_generic_attr(res);
attr->immediate_value_entity = entity;
attr->immediate_value = immediate_value;
sparc_attr_t *attr = (sparc_attr_t*)get_irn_generic_attr(res);
attr->immediate_value_entity = entity;
attr->immediate_value = immediate_value;
+ arch_add_irn_flags(res, (arch_irn_flags_t)sparc_arch_irn_flag_immediate_form);
}
}
-static void init_sparc_jmp_cond_attr(ir_node *node, pn_Cmp pnc, bool is_unsigned)
+static void init_sparc_jmp_cond_attr(ir_node *node, ir_relation relation,
+ bool is_unsigned)
{
sparc_jmp_cond_attr_t *attr = get_sparc_jmp_cond_attr(node);
{
sparc_jmp_cond_attr_t *attr = get_sparc_jmp_cond_attr(node);
- attr->
pnc = pnc
;
+ attr->
relation = relation
;
attr->is_unsigned = is_unsigned;
}
attr->is_unsigned = is_unsigned;
}
@@
-233,8
+241,8
@@
static void init_sparc_attributes(ir_node *node, arch_irn_flags_t flags,
backend_info_t *info;
(void) execution_units;
backend_info_t *info;
(void) execution_units;
- arch_
irn_set
_flags(node, flags);
- arch_set_i
n_register_reqs
(node, in_reqs);
+ arch_
set_irn
_flags(node, flags);
+ arch_set_i
rn_register_reqs_in
(node, in_reqs);
info = be_get_info(node);
info->out_infos = NEW_ARR_D(reg_out_info_t, obst, n_res);
info = be_get_info(node);
info->out_infos = NEW_ARR_D(reg_out_info_t, obst, n_res);
@@
-291,6
+299,7
@@
static void sparc_copy_attr(ir_graph *irg, const ir_node *old_node,
/* copy the attributes */
memcpy(attr_new, attr_old, get_op_attr_size(get_irn_op(old_node)));
/* copy out flags */
/* copy the attributes */
memcpy(attr_new, attr_old, get_op_attr_size(get_irn_op(old_node)));
/* copy out flags */
+ new_info->flags = old_info->flags;
new_info->out_infos =
DUP_ARR_D(reg_out_info_t, obst, old_info->out_infos);
new_info->in_reqs = old_info->in_reqs;
new_info->out_infos =
DUP_ARR_D(reg_out_info_t, obst, old_info->out_infos);
new_info->in_reqs = old_info->in_reqs;
@@
-328,7
+337,7
@@
static int cmp_attr_sparc_jmp_cond(const ir_node *a, const ir_node *b)
if (cmp_attr_sparc(a, b))
return 1;
if (cmp_attr_sparc(a, b))
return 1;
- return attr_a->
pnc != attr_b->pnc
+ return attr_a->
relation != attr_b->relation
|| attr_a->is_unsigned != attr_b->is_unsigned;
}
|| attr_a->is_unsigned != attr_b->is_unsigned;
}
@@
-363,7
+372,7
@@
static int cmp_attr_sparc_fp_conv(const ir_node *a, const ir_node *b)
return 1;
return attr_a->src_mode != attr_b->src_mode
return 1;
return attr_a->src_mode != attr_b->src_mode
- || attr_a->dest_mode != attr_b->dest_mode;
;
+ || attr_a->dest_mode != attr_b->dest_mode;
}
/* Include the generated constructor functions */
}
/* Include the generated constructor functions */