bestate code */
} arch_register_type_t;
-typedef enum arch_operand_type_t {
- arch_operand_type_invalid,
- arch_operand_type_memory,
- arch_operand_type_register,
- arch_operand_type_immediate,
- arch_operand_type_symconst,
- arch_operand_type_last
-} arch_operand_type_t;
-
/**
* Different types of register allocation requirements.
*/
* Certain node classes which are relevant for the register allocator.
*/
typedef enum arch_irn_class_t {
- arch_irn_class_normal = 1 << 0,
- arch_irn_class_spill = 1 << 1,
- arch_irn_class_reload = 1 << 2,
- arch_irn_class_remat = 1 << 3,
- arch_irn_class_copy = 1 << 4,
- arch_irn_class_perm = 1 << 5,
- arch_irn_class_branch = 1 << 6,
- arch_irn_class_call = 1 << 7,
- arch_irn_class_load = 1 << 8,
- arch_irn_class_store = 1 << 9,
- arch_irn_class_stackparam = 1 << 10,
+ arch_irn_class_spill = 1 << 0,
+ arch_irn_class_reload = 1 << 1,
+ arch_irn_class_remat = 1 << 2,
+ arch_irn_class_copy = 1 << 3,
+ arch_irn_class_perm = 1 << 4,
+ arch_irn_class_branch = 1 << 5,
+ arch_irn_class_load = 1 << 7,
+ arch_irn_class_store = 1 << 8
} arch_irn_class_t;
/**
* Some flags describing a node in more detail.
*/
typedef enum arch_irn_flags_t {
- arch_irn_flags_none = 0, /**< Node flags. */
- arch_irn_flags_dont_spill = 1, /**< This must not be spilled. */
- arch_irn_flags_rematerializable = 2, /**< This can be replicated instead of spilled/reloaded. */
- arch_irn_flags_ignore = 4, /**< Ignore node during register allocation. */
- arch_irn_flags_modify_sp = 8, /**< I modify the stack pointer. */
- arch_irn_flags_modify_flags = 16, /**< I modify flags. */
- arch_irn_flags_last = arch_irn_flags_modify_flags
+ arch_irn_flags_none = 0, /**< Node flags. */
+ arch_irn_flags_dont_spill = 1U << 0, /**< This must not be spilled. */
+ arch_irn_flags_rematerializable = 1U << 1, /**< This can be replicated instead of spilled/reloaded. */
+ arch_irn_flags_ignore = 1U << 2, /**< Ignore node during register allocation. */
+ arch_irn_flags_modify_sp = 1U << 3, /**< I modify the stack pointer. */
+ arch_irn_flags_modify_flags = 1U << 4 /**< I modify flags. */
} arch_irn_flags_t;
-/**
- * Get the string representation of a flag.
- * This functions does not handle or'ed bitmasks of flags.
- * @param flag The flag.
- * @return The flag as a string.
- */
-extern const char *arch_irn_flag_str(arch_irn_flags_t flag);
-
void arch_set_frame_offset(ir_node *irn, int bias);
ir_entity *arch_get_frame_entity(const ir_node *irn);
*/
const arch_register_req_t *arch_get_register_req(const ir_node *irn, int pos);
-/**
- * Check if an operand is a register operand.
- * @param irn The node.
- * @param pos The position of the operand.
- * @return 1, if the operand is significant for register allocation, 0
- * if not.
- */
-int arch_is_register_operand(const ir_node *irn, int pos);
-
/**
* Get the number of allocatable registers concerning
* a register class for an operand of a node.