X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbearch_t.h;h=efba49542a4c8edb7df33677cf1199a8ca867855;hb=afbbc0b1ccd684c4c24bfd43d0f994123245f39f;hp=3709b7ea69f8e0a7ae8585a11fbc2c9192aaa103;hpb=1894b7dd99b524c25c8fa18c33c250ea2cde2e36;p=libfirm diff --git a/ir/be/bearch_t.h b/ir/be/bearch_t.h index 3709b7ea6..efba49542 100644 --- a/ir/be/bearch_t.h +++ b/ir/be/bearch_t.h @@ -522,6 +522,24 @@ struct arch_isa_if_t { * @return A flexible array ARR_F containing all desired irgs in the desired order. */ ir_graph **(*get_backend_irg_list)(const void *self, ir_graph ***irgs); + + /** + * mark node as rematerialized + */ + void (*mark_remat)(const void *self, ir_node *node); + + /** + * parse an assembler constraint part and set flags according to its nature + * advances the *c pointer to point to the last parsed character (so if you + * parse a single character don't advance c) + */ + asm_constraint_flags_t (*parse_asm_constraint)(const void *self, const char **c); + + /** + * returns true if the string is a valid clobbered (register) in this + * backend + */ + int (*is_valid_clobber)(const void *self, const char *clobber); }; #define arch_env_done(env) ((env)->impl->done(env)) @@ -537,6 +555,10 @@ struct arch_isa_if_t { #define arch_env_get_allowed_execution_units(env,irn) ((env)->impl->get_allowed_execution_units((env), (irn))) #define arch_env_get_machine(env) ((env)->impl->get_machine(env)) #define arch_env_get_backend_irg_list(env,irgs) ((env)->impl->get_backend_irg_list((env), (irgs))) +#define arch_env_parse_asm_constraint(env,c) ((env)->impl->parse_asm_constraint((env), (c)) +#define arch_env_is_valid_clobber(env,clobber) ((env)->impl->is_valid_clobber((env), (clobber)) +#define arch_env_mark_remat(env,node) \ + do { if ((env)->impl->mark_remat != NULL) (env)->impl->mark_remat((env), (node)); } while(0) /** * ISA base class.