8548aa7fe64c13a1f632ee560279330e32c3c14e
[libfirm] / ir / ana / execfreq.h
1 #ifndef EXECFREQ_H_
2 #define EXECFREQ_H_
3 /*
4  * Project:     libFIRM
5  * File name:   ir/ana/execfreq.h
6  * Purpose:     Compute an estimate of basic block executions.
7  * Author:      Adam M. Szalkowski
8  * Modified by:
9  * Created:     28.05.2006
10  * CVS-ID:      $Id$
11  * Copyright:   (c) 2006 Universitaet Karlsruhe
12  * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
13  */
14 #include "firm_types.h"
15
16 struct _exec_freq_t;
17
18 #ifndef _EXECFREQ_TYPEDEF
19 #define _EXECFREQ_TYPEDEF
20 typedef struct _exec_freq_t exec_freq_t;
21 #endif
22
23 /**
24  * Create execfreq structure (to be used with set_execfreq)
25  */
26 exec_freq_t *create_execfreq(ir_graph *irg);
27
28 /**
29  * Set execution frequency of a basic block
30  */
31 void set_execfreq(exec_freq_t *ef, const ir_node *block, double freq);
32
33 /**
34  * Create execfreq structure and initialze with estimated frequencies
35  */
36 exec_freq_t *compute_execfreq(ir_graph *irg, double loop_weight);
37
38 void free_execfreq(exec_freq_t *ef);
39
40 double get_block_execfreq(const exec_freq_t *ef, const ir_node * irn);
41 unsigned long get_block_execfreq_ulong(const exec_freq_t *ef, const ir_node *bb);
42
43 #endif /* EXECFREQ_H_ */