BugFix: TLS variables are Sels, not SymConst
[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 ir_exec_freq;
17
18 #ifndef _EXECFREQ_TYPEDEF
19 #define _EXECFREQ_TYPEDEF
20 typedef struct ir_exec_freq ir_exec_freq;
21 #endif
22
23 /**
24  * Create execfreq structure (to be used with set_execfreq)
25  */
26 ir_exec_freq *create_execfreq(ir_graph *irg);
27
28 /**
29  * Set execution frequency of a basic block
30  */
31 void set_execfreq(ir_exec_freq *ef, const ir_node *block, double freq);
32
33 /**
34  * Create execfreq structure and initialize with estimated frequencies
35  */
36 ir_exec_freq *compute_execfreq(ir_graph *irg, double loop_weight);
37
38 void free_execfreq(ir_exec_freq *ef);
39
40 double get_block_execfreq(const ir_exec_freq *ef, const ir_node *block);
41 unsigned long get_block_execfreq_ulong(const ir_exec_freq *ef, const ir_node *block);
42
43 #endif /* EXECFREQ_H_ */