X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbearch.h;h=6da6382ccb1a7d8c169024a0f8e98c286670d7a7;hb=c5603c15033e1b7788012ac8cc4ddcf134f5428d;hp=86005f4a231ecf2691e2505cfa5729ba1061e640;hpb=f436f72951577e35b60e0ea1f2e6a536e4f479bb;p=libfirm diff --git a/ir/be/bearch.h b/ir/be/bearch.h index 86005f4a2..6da6382cc 100644 --- a/ir/be/bearch.h +++ b/ir/be/bearch.h @@ -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 */