fixed constrain handling
[libfirm] / ir / be / bearch.h
index 86005f4..6da6382 100644 (file)
@@ -322,6 +322,15 @@ struct _arch_irn_ops_if_t {
    */
   int (*possible_memory_operand)(const void *self, const ir_node *irn, unsigned int i);
 
+  /**
+   * Ask the backend to assimilate @p reload of operand @p i into @p irn.
+   *
+   * @param self   The this pointer.
+   * @param irn    The node.
+   * @param reload The reload.
+   * @param i      The position of the reload.
+   */
+  void (*perform_memory_operand)(const void *self, ir_node *irn, ir_node *reload, unsigned int i);
 };
 
 /**
@@ -335,7 +344,10 @@ extern void arch_set_frame_offset(const arch_env_t *env, ir_node *irn, int bias)
 
 extern entity *arch_get_frame_entity(const arch_env_t *env, ir_node *irn);
 
+extern int arch_get_op_estimated_cost(const arch_env_t *env, const ir_node *irn);
 extern arch_inverse_t *arch_get_inverse(const arch_env_t *env, const ir_node *irn, int i, arch_inverse_t *inverse, struct obstack *obstack);
+extern int arch_possible_memory_operand(const arch_env_t *env, const ir_node *irn, unsigned int i);
+extern void arch_perform_memory_operand(const arch_env_t *env, ir_node *irn, ir_node *reload, unsigned int i);
 
 /**
  * Get the register requirements for a node.
@@ -702,4 +714,5 @@ extern arch_env_t *arch_env_push_irn_handler(arch_env_t *env, const arch_irn_han
  */
 extern const arch_irn_handler_t *arch_env_pop_irn_handler(arch_env_t *env);
 
+
 #endif /* _FIRM_BEARCH_H */