Merge branch 'vendor/GCC44'
[dragonfly.git] / contrib / gcc-4.4 / gcc / sel-sched-dump.h
CommitLineData
c251ad9e
SS
1/* Instruction scheduling pass. Log dumping infrastructure.
2 Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
8Software Foundation; either version 3, or (at your option) any later
9version.
10
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14for more details.
15
16You should have received a copy of the GNU General Public License
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
19
20
21#ifndef GCC_SEL_SCHED_DUMP_H
22#define GCC_SEL_SCHED_DUMP_H
23
24#include "sel-sched-ir.h"
25
26
27/* These values control the dumping of control flow graph to the .dot file. */
28enum sel_dump_cfg_def
29 {
30 /* Dump only current region. */
31 SEL_DUMP_CFG_CURRENT_REGION = 2,
32
33 /* Dump note_list for this bb. */
34 SEL_DUMP_CFG_BB_NOTES_LIST = 4,
35
36 /* Dump availability set from the bb header. */
37 SEL_DUMP_CFG_AV_SET = 8,
38
39 /* Dump liveness set from the bb header. */
40 SEL_DUMP_CFG_LV_SET = 16,
41
42 /* Dump insns of the given block. */
43 SEL_DUMP_CFG_BB_INSNS = 32,
44
45 /* Show current fences when dumping cfg. */
46 SEL_DUMP_CFG_FENCES = 64,
47
48 /* Show insn's seqnos when dumping cfg. */
49 SEL_DUMP_CFG_INSN_SEQNO = 128,
50
51 /* Dump function name when dumping cfg. */
52 SEL_DUMP_CFG_FUNCTION_NAME = 256,
53
54 /* Dump loop father number of the given bb. */
55 SEL_DUMP_CFG_BB_LOOP = 512,
56
57 /* The default flags for cfg dumping. */
58 SEL_DUMP_CFG_FLAGS = (SEL_DUMP_CFG_CURRENT_REGION
59 | SEL_DUMP_CFG_BB_NOTES_LIST
60 | SEL_DUMP_CFG_AV_SET
61 | SEL_DUMP_CFG_LV_SET
62 | SEL_DUMP_CFG_BB_INSNS
63 | SEL_DUMP_CFG_FENCES
64 | SEL_DUMP_CFG_INSN_SEQNO
65 | SEL_DUMP_CFG_BB_LOOP)
66 };
67
68/* These values control the dumping of insns containing in expressions. */
69enum dump_insn_rtx_def
70 {
71 /* Dump insn's UID. */
72 DUMP_INSN_RTX_UID = 2,
73
74 /* Dump insn's pattern. */
75 DUMP_INSN_RTX_PATTERN = 4,
76
77 /* Dump insn's basic block number. */
78 DUMP_INSN_RTX_BBN = 8,
79
80 /* Dump all of the above. */
81 DUMP_INSN_RTX_ALL = (DUMP_INSN_RTX_UID | DUMP_INSN_RTX_PATTERN
82 | DUMP_INSN_RTX_BBN)
83 };
84
85extern void dump_insn_rtx_1 (rtx, int);
86extern void dump_insn_rtx (rtx);
87extern void debug_insn_rtx (rtx);
88
89/* These values control dumping of vinsns. The meaning of different fields
90 of a vinsn is explained in sel-sched-ir.h. */
91enum dump_vinsn_def
92 {
93 /* Dump the insn behind this vinsn. */
94 DUMP_VINSN_INSN_RTX = 2,
95
96 /* Dump vinsn's type. */
97 DUMP_VINSN_TYPE = 4,
98
99 /* Dump vinsn's count. */
100 DUMP_VINSN_COUNT = 8,
101
102 /* Dump the cost (default latency) of the insn behind this vinsn. */
103 DUMP_VINSN_COST = 16,
104
105 /* Dump all of the above. */
106 DUMP_VINSN_ALL = (DUMP_VINSN_INSN_RTX | DUMP_VINSN_TYPE | DUMP_VINSN_COUNT
107 | DUMP_VINSN_COST)
108 };
109
110extern void dump_vinsn_1 (vinsn_t, int);
111extern void dump_vinsn (vinsn_t);
112extern void debug_vinsn (vinsn_t);
113
114/* These values control dumping of expressions. The meaning of the fields
115 is explained in sel-sched-ir.h. */
116enum dump_expr_def
117 {
118 /* Dump the vinsn behind this expression. */
119 DUMP_EXPR_VINSN = 2,
120
121 /* Dump expression's SPEC parameter. */
122 DUMP_EXPR_SPEC = 4,
123
124 /* Dump expression's priority. */
125 DUMP_EXPR_PRIORITY = 8,
126
127 /* Dump the number of times this expression was scheduled. */
128 DUMP_EXPR_SCHED_TIMES = 16,
129
130 /* Dump speculative status of the expression. */
131 DUMP_EXPR_SPEC_DONE_DS = 32,
132
133 /* Dump the basic block number which originated this expression. */
134 DUMP_EXPR_ORIG_BB = 64,
135
136 /* Dump expression's usefulness. */
137 DUMP_EXPR_USEFULNESS = 128,
138
139 /* Dump all of the above. */
140 DUMP_EXPR_ALL = (DUMP_EXPR_VINSN | DUMP_EXPR_SPEC | DUMP_EXPR_PRIORITY
141 | DUMP_EXPR_SCHED_TIMES | DUMP_EXPR_SPEC_DONE_DS
142 | DUMP_EXPR_ORIG_BB | DUMP_EXPR_USEFULNESS)
143 };
144
145extern void dump_expr_1 (expr_t, int);
146extern void dump_expr (expr_t);
147extern void debug_expr (expr_t);
148
149/* A enumeration for dumping flags of an insn. The difference from
150 dump_insn_rtx_def is that these fields are for insns in stream only. */
151enum dump_insn_def
152{
153 /* Dump expression of this insn. */
154 DUMP_INSN_EXPR = 2,
155
156 /* Dump insn's seqno. */
157 DUMP_INSN_SEQNO = 4,
158
159 /* Dump the cycle on which insn was scheduled. */
160 DUMP_INSN_SCHED_CYCLE = 8,
161
162 /* Dump insn's UID. */
163 DUMP_INSN_UID = 16,
164
165 /* Dump insn's pattern. */
166 DUMP_INSN_PATTERN = 32,
167
168 /* Dump insn's basic block number. */
169 DUMP_INSN_BBN = 64,
170
171 /* Dump all of the above. */
172 DUMP_INSN_ALL = (DUMP_INSN_EXPR | DUMP_INSN_SEQNO | DUMP_INSN_BBN
173 | DUMP_INSN_SCHED_CYCLE | DUMP_INSN_UID | DUMP_INSN_PATTERN)
174};
175
176extern void dump_insn_1 (insn_t, int);
177extern void dump_insn (insn_t);
178extern void debug_insn (insn_t);
179
c251ad9e
SS
180/* When this flag is on, we are dumping to the .dot file.
181 When it is off, we are dumping to log. */
182extern bool sched_dump_to_dot_p;
c251ad9e
SS
183\f
184
185/* Functions from sel-sched-dump.c. */
4b1e227d 186extern void sel_print (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
c251ad9e
SS
187extern const char * sel_print_insn (const_rtx, int);
188extern void free_sel_dump_data (void);
189
190extern void block_start (void);
191extern void block_finish (void);
192extern int get_print_blocks_num (void);
193extern void line_start (void);
194extern void line_finish (void);
195
196extern void sel_print_rtl (rtx x);
197extern void dump_insn_1 (insn_t, int);
198extern void dump_insn (insn_t);
199extern void dump_insn_vector (rtx_vec_t);
200extern void dump_expr (expr_t);
201extern void dump_used_regs (bitmap);
202extern void dump_av_set (av_set_t);
203extern void dump_lv_set (regset);
204extern void dump_blist (blist_t);
205extern void dump_flist (flist_t);
206extern void dump_hard_reg_set (const char *, HARD_REG_SET);
207extern void sel_debug_cfg_1 (int);
208extern void sel_debug_cfg (void);
209extern void setup_dump_cfg_params (void);
210
211/* Debug functions. */
212extern void debug_expr (expr_t);
213extern void debug_av_set (av_set_t);
214extern void debug_lv_set (regset);
215extern void debug_ilist (ilist_t);
216extern void debug_blist (blist_t);
217extern void debug_insn_vector (rtx_vec_t);
218extern void debug_hard_reg_set (HARD_REG_SET);
219extern rtx debug_mem_addr_value (rtx);
220#endif