added AddrMode attribute
[libfirm] / ir / be / ia32 / ia32_nodes_attr.h
index fbea121..520cb33 100644 (file)
@@ -8,14 +8,17 @@ typedef enum { flavour_Div, flavour_Mod, flavour_DivMod } divmod_flavour_t;
 typedef enum { pn_EAX, pn_EDX } pn_ia32_Register;
 
 typedef struct {
-  enum { asmop_Const, asmop_SymConst } tp;
+  enum { asmop_Const, asmop_SymConst, asmop_AddrMode } tp;
 
   tarval  *tv;       /**<< tarval for immediate operations */
-  tarval  *offset;   /**<< offset for LEA */
+  tarval  *offset;   /**<< offset for AddrMode */
   ir_node *old_ir;   /**<< old ir node to avoid duplicating information (symconst in case of asmop_SymConst) */
 
   divmod_flavour_t dm_flav;   /**<< flavour of a DivMod (flavour_Div/Mod/DivMod) */
 
+  long pn_code;                        /**<< projnum "types" (e.g. indicates the compare operator of a conditional jump
+                          or an argument number) */
+
   unsigned n_res;      /**<< number of results */
 
   arch_irn_flags_t    flags;     /**<< indicating if spillable and/or rematerializeable */
@@ -23,8 +26,7 @@ typedef struct {
   const arch_register_req_t **in_req;  /**<< register requirements for arguments */
   const arch_register_req_t **out_req; /**<< register requirements for results */
 
-  const arch_register_t **in;          /**<< register slots for arguments */
-  const arch_register_t **out;         /**<< register slots for results */
+  const arch_register_t **slots;          /**<< register slots for assigned registers */
 } asmop_attr;
 
 #endif /* _IA32_NODES_ATTR_H_ */