Example for optimizing non-strict programs using combo.
[libfirm] / ir / be / bearch.h
index f81adc5..db99133 100644 (file)
@@ -132,19 +132,6 @@ const arch_register_req_t *arch_get_register_req(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
- * a register class for an operand of a node.
- * @param irn The node.
- * @param pos The position of the node's operand.
- * @param bs  The bitset all allocatable registers shall be put into.
- *            Note, that you can also pass NULL here. If you don't,
- *            make sure, the bitset is as large as the register class
- *            has registers.
- * @return    The amount of registers allocatable for that operand.
- */
-int arch_get_allocatable_regs(const ir_node *irn, int pos, bitset_t *bs);
-
 /**
  * Put all registers which shall not be ignored by the register
  * allocator in a bit set.
@@ -162,6 +149,8 @@ extern void arch_put_non_ignore_regs(const arch_register_class_t *cls, bitset_t
  */
 int arch_reg_is_allocatable(const ir_node *irn, int pos, const arch_register_t *reg);
 
+#define arch_reg_out_is_allocatable(irn, reg) arch_reg_is_allocatable(irn, -1, reg)
+
 /**
  * Get the register class of an operand of a node.
  * @param irn The node.
@@ -171,6 +160,8 @@ int arch_reg_is_allocatable(const ir_node *irn, int pos, const arch_register_t *
  */
 const arch_register_class_t *arch_get_irn_reg_class(const ir_node *irn, int pos);
 
+#define arch_get_irn_reg_class_out(irn) arch_get_irn_reg_class(irn, -1)
+
 /**
  * Get the register allocated at a certain output operand of a node.
  * @param irn The node.
@@ -203,11 +194,8 @@ arch_irn_flags_t arch_irn_get_flags(const ir_node *irn);
 
 #define arch_irn_is(irn, flag) ((arch_irn_get_flags(irn) & arch_irn_flags_ ## flag) != 0)
 
-#define arch_irn_has_reg_class(irn, pos, cls) \
-       ((cls) == arch_get_irn_reg_class(irn, pos))
-
 #define arch_irn_consider_in_reg_alloc(cls, irn) \
-       (arch_irn_has_reg_class(irn, -1, cls) && !arch_irn_is(irn, ignore))
+       (arch_get_irn_reg_class_out(irn) == (cls) && !arch_irn_is(irn, ignore))
 
 /**
  * Get the operations of an irn.