projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- Improved addressmode optimisation for conv nodes
[libfirm]
/
ir
/
be
/
ia32
/
ia32_nodes_attr.h
diff --git
a/ir/be/ia32/ia32_nodes_attr.h
b/ir/be/ia32/ia32_nodes_attr.h
index
2b89bd2
..
d9e36dc
100644
(file)
--- a/
ir/be/ia32/ia32_nodes_attr.h
+++ b/
ir/be/ia32/ia32_nodes_attr.h
@@
-1,3
+1,9
@@
+/**
+ * Type definitions for ia32 node attributes.
+ * @author Christian Wuerdig
+ * $Id$
+ */
+
#ifndef _IA32_NODES_ATTR_H_
#define _IA32_NODES_ATTR_H_
#ifndef _IA32_NODES_ATTR_H_
#define _IA32_NODES_ATTR_H_
@@
-82,17
+88,23
@@
typedef struct _ia32_attr_t {
unsigned op_flav:2; /**< flavour of an op (flavour_Div/Mod/DivMod) */
unsigned op_flav:2; /**< flavour of an op (flavour_Div/Mod/DivMod) */
- unsigned flags:4; /**< indicating if spillable
and/or rematerializeabl
e */
+ unsigned flags:4; /**< indicating if spillable
, rematerializeable, stack modifying and/or ignor
e */
unsigned is_commutative:1; /**< indicates whether op is commutative or not */
unsigned emit_cl:1; /**< indicates whether we must emit cl instead of ecx (needed for shifts) */
unsigned is_commutative:1; /**< indicates whether op is commutative or not */
unsigned emit_cl:1; /**< indicates whether we must emit cl instead of ecx (needed for shifts) */
- unsigned n_res:8; /**< number of results produced by this node */
+ unsigned got_lea:1; /**< indicates whether or not this node already consumed a LEA */
+
+ unsigned got_reload:1; /**< set to 1 if node cosumed a reload */
+
+ unsigned n_res:6; /**< number of results produced by this node */
} data;
} data;
- struct obstack *am_offs; /**< offsets for AddrMode */
- ident *am_sc; /**< SymConst for AddrMode */
+ int *out_flags; /**< flags for each produced value */
+
+ int am_offs; /**< offsets for AddrMode */
+ ident *am_sc; /**< SymConst for AddrMode */
union {
tarval *tv; /**< tarval for immediate operations */
union {
tarval *tv; /**< tarval for immediate operations */
@@
-110,6
+122,8
@@
typedef struct _ia32_attr_t {
long pn_code; /**< projnum "types" (e.g. indicate compare operators and argument numbers) */
long pn_code; /**< projnum "types" (e.g. indicate compare operators and argument numbers) */
+ unsigned latency; /**< the latency of the instruction in clock cycles */
+
#ifndef NDEBUG
const char *orig_node; /**< holds the name of the original ir node for debugging purposes */
#endif /* NDEBUG */
#ifndef NDEBUG
const char *orig_node; /**< holds the name of the original ir node for debugging purposes */
#endif /* NDEBUG */