0602a7d210a3b33afdb46da404588fc8b8b800fb
[libfirm] / ir / be / mips / mips_nodes_attr.h
1 #ifndef _MIPS_NODES_ATTR_H_
2 #define _MIPS_NODES_ATTR_H_
3
4 #include "../bearch.h"
5 #include "irmode_t.h"
6
7 typedef struct _mips_attr_t {
8         arch_irn_flags_t flags;     /**< indicating if spillable, rematerializeable ... etc. */
9         int              n_res;     /**< number of results for this node */
10
11         tarval *tv;                                     /**< contains the immediate value (if the node has any) */
12         ident *symconst_id;                     /**< contains the ident (for la operations) */
13
14         union {
15                 ir_mode *load_store_mode;       /**< contains the mode of a load/store */
16                 ir_mode *original_mode;         /**< contains the original mode of the node */
17         } modes;
18         ir_entity *stack_entity;        /**< contains the entity on the stack for a load/store mode */
19         int stack_entity_offset;        /**< contains the real stack offset for the entity */
20         int switch_default_pn;          /**< proj number of default case in switch */
21
22         const arch_register_req_t **in_req;  /**< register requirements for arguments */
23         const arch_register_req_t **out_req; /**< register requirements for results */
24
25         /* must be last, dynamically allocated */
26         const arch_register_t *slots[1];     /**< register slots for assigned registers */
27 } mips_attr_t;
28
29 #endif /* _mips_NODES_ATTR_H_ */