From 7f2f348e4dc7788629f7e83b43faa38bd9f085fe Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Mon, 10 Apr 2006 15:22:53 +0000 Subject: [PATCH] added hooks for permutation statistics [r7613] --- ir/ir/irhooks.h | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ir/ir/irhooks.h b/ir/ir/irhooks.h index 08550b3e3..f7cda0643 100644 --- a/ir/ir/irhooks.h +++ b/ir/ir/irhooks.h @@ -152,10 +152,18 @@ typedef struct hook_entry { void (*_hook_arch_dep_replace_division_by_const)(void *context, ir_node *irn); /** This hook is called while calculating the register pressure. */ - void (*_hook_be_block_regpressure)(void *context, ir_node *block, ir_graph *irg, int pressure, ident *class_name); + void (*_hook_be_block_regpressure)(void *context, ir_node *block, ir_graph *irg, int pressure, ident *class_name); /** This hook is called during scheduling to get distribution of ready nodes */ - void (*_hook_be_block_sched_ready)(void *context, ir_node *block, ir_graph *irg, int num_ready); + void (*_hook_be_block_sched_ready)(void *context, ir_node *block, ir_graph *irg, int num_ready); + + /** This hook is called during permutation lowering once for each permutation. */ + void (*_hook_be_block_stat_perm)(void *context, ident *class_name, int n_regs, ir_node *perm, ir_node *block, + int size, int real_size); + + /** This hook is called during permutation lowering for each cycle/chain in a permutation. */ + void (*_hook_be_block_stat_permcycle)(void *context, ident *class_name, ir_node *perm, ir_node *block, + int is_chain, int size, int n_ops); /** This hook is called after a new mode was registered. */ void (*_hook_new_mode)(void *context, const ir_mode *tmpl, ir_mode *mode); @@ -203,6 +211,8 @@ typedef enum { hook_arch_dep_replace_division_by_const, hook_be_block_regpressure, hook_be_block_sched_ready, + hook_be_block_stat_perm, + hook_be_block_stat_permcycle, hook_new_mode, hook_new_entity, hook_new_type, @@ -284,6 +294,10 @@ extern hook_entry_t *hooks[hook_last]; hook_exec(hook_be_block_regpressure, (ctx, block, irg, pressure, class_name)) #define hook_be_block_sched_ready(block, irg, num_ready) \ hook_exec(hook_be_block_sched_ready, (ctx, block, irg, num_ready)) +#define hook_be_block_stat_perm(class_name, n_regs, perm, block, size, real_size) \ + hook_exec(hook_be_block_stat_perm, (ctx, class_name, n_regs, perm, block, size, real_size)) +#define hook_be_block_stat_permcycle(class_name, perm, block, is_chain, size, n_ops) \ + hook_exec(hook_be_block_stat_permcycle, (ctx, class_name, perm, block, is_chain, size, n_ops)) #define hook_new_mode(tmpl, mode) hook_exec(hook_new_mode, (ctx, tmpl, mode)) #define hook_new_entity(ent) hook_exec(hook_new_entity, (ctx, ent)) #define hook_new_type(tp) hook_exec(hook_new_type, (ctx, tp)) -- 2.20.1