Add arch_get_register_req_out().
[libfirm] / ir / be / bearch.h
index 7ef5f3d..f81adc5 100644 (file)
@@ -64,15 +64,6 @@ typedef enum arch_register_type_t {
                                                   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.
  */
@@ -99,40 +90,26 @@ extern char *arch_register_req_format(char *buf, size_t len, const arch_register
  * 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;
 
 /**
  * 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);
@@ -153,14 +130,7 @@ void            arch_perform_memory_operand(ir_node *irn, ir_node *spill, unsign
  */
 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
@@ -210,38 +180,34 @@ const arch_register_t *arch_get_irn_register(const ir_node *irn);
 
 /**
  * Set the register for a certain output operand.
- * @param env The architecture environment.
  * @param irn The node.
  * @param reg The register.
  */
-extern void arch_set_irn_register(const arch_env_t *env, ir_node *irn,
-                                  const arch_register_t *reg);
+void arch_set_irn_register(ir_node *irn, const arch_register_t *reg);
 
 /**
  * Classify a node.
- * @param env The architecture environment.
  * @param irn The node.
  * @return A classification of the node.
  */
-extern arch_irn_class_t arch_irn_classify(const arch_env_t *env, const ir_node *irn);
+arch_irn_class_t arch_irn_classify(const ir_node *irn);
 
-#define arch_irn_class_is(env, irn, irn_class) ((arch_irn_classify(env, irn) & arch_irn_class_ ## irn_class) != 0)
+#define arch_irn_class_is(irn, irn_class) ((arch_irn_classify(irn) & arch_irn_class_ ## irn_class) != 0)
 
 /**
  * Get the flags of a node.
- * @param env The architecture environment.
  * @param irn The node.
  * @return The flags.
  */
-extern arch_irn_flags_t arch_irn_get_flags(const arch_env_t *env, const ir_node *irn);
+arch_irn_flags_t arch_irn_get_flags(const ir_node *irn);
 
-#define arch_irn_is(env, irn, flag) ((arch_irn_get_flags(env, irn) & arch_irn_flags_ ## flag) != 0)
+#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(env, cls, irn) \
-       (arch_irn_has_reg_class(irn, -1, cls) && !arch_irn_is(env, irn, ignore))
+#define arch_irn_consider_in_reg_alloc(cls, irn) \
+       (arch_irn_has_reg_class(irn, -1, cls) && !arch_irn_is(irn, ignore))
 
 /**
  * Get the operations of an irn.