More missing config.h
[libfirm] / ir / be / ia32 / ia32_nodes_attr.h
index f37d617..d11d07c 100644 (file)
@@ -13,6 +13,7 @@
 
 #include "firm_types.h"
 #include "../bearch.h"
+#include "../bemachine.h"
 
 typedef enum { flavour_Div = 1, flavour_Mod, flavour_DivMod } ia32_op_flavour_t;
 typedef enum { pn_EAX, pn_EDX } pn_ia32_Register;
@@ -88,7 +89,7 @@ typedef struct _ia32_attr_t {
 
                unsigned op_flav:2;         /**< flavour of an op (flavour_Div/Mod/DivMod) */
 
-               unsigned flags:4;           /**< indicating if spillable and/or rematerializeable */
+               unsigned flags:4;           /**< indicating if spillable, rematerializeable, stack modifying and/or ignore */
 
                unsigned is_commutative:1;  /**< indicates whether op is commutative or not */
 
@@ -101,7 +102,9 @@ typedef struct _ia32_attr_t {
                unsigned n_res:6;           /**< number of results produced by this node */
        } data;
 
-       int am_offs;        /**< offsets for AddrMode */
+       int *out_flags;     /**< flags for each produced value */
+
+       int   am_offs;      /**< offsets for AddrMode */
        ident *am_sc;       /**< SymConst for AddrMode */
 
        union {
@@ -126,6 +129,8 @@ typedef struct _ia32_attr_t {
        const char *orig_node;      /**< holds the name of the original ir node for debugging purposes */
 #endif /* NDEBUG */
 
+       const be_execution_unit_t ***exec_units; /**< list of units this operation can be executed on */
+
        const ia32_register_req_t **in_req;  /**< register requirements for arguments */
        const ia32_register_req_t **out_req; /**< register requirements for results */