* 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_t;
/**
*/
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);
+#define arch_get_register_req_out(irn) arch_get_register_req(irn, -1)
/**
* Get the number of allocatable registers concerning