]>
Commit | Line | Data |
---|---|---|
b8698a0f | 1 | /* Instruction scheduling pass. Log dumping infrastructure. |
23a5b65a | 2 | Copyright (C) 2006-2014 Free Software Foundation, Inc. |
e855c69d AB |
3 | |
4 | This file is part of GCC. | |
5 | ||
6 | GCC is free software; you can redistribute it and/or modify it under | |
7 | the terms of the GNU General Public License as published by the Free | |
8 | Software Foundation; either version 3, or (at your option) any later | |
9 | version. | |
10 | ||
11 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
12 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 | for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
17 | along 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. */ | |
28 | enum 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. */ | |
b8698a0f L |
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 | |
e855c69d AB |
65 | | SEL_DUMP_CFG_BB_LOOP) |
66 | }; | |
67 | ||
68 | /* These values control the dumping of insns containing in expressions. */ | |
69 | enum 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 | ||
85 | extern void dump_insn_rtx_1 (rtx, int); | |
86 | extern void dump_insn_rtx (rtx); | |
87 | extern 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. */ | |
91 | enum 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 | ||
110 | extern void dump_vinsn_1 (vinsn_t, int); | |
111 | extern void dump_vinsn (vinsn_t); | |
112 | extern void debug_vinsn (vinsn_t); | |
113 | ||
7b3b6ae4 LC |
114 | extern void debug (vinsn_def &ref); |
115 | extern void debug (vinsn_def *ptr); | |
116 | extern void debug_verbose (vinsn_def &ref); | |
117 | extern void debug_verbose (vinsn_def *ptr); | |
118 | ||
119 | ||
e855c69d AB |
120 | /* These values control dumping of expressions. The meaning of the fields |
121 | is explained in sel-sched-ir.h. */ | |
122 | enum dump_expr_def | |
123 | { | |
124 | /* Dump the vinsn behind this expression. */ | |
125 | DUMP_EXPR_VINSN = 2, | |
b8698a0f | 126 | |
e855c69d AB |
127 | /* Dump expression's SPEC parameter. */ |
128 | DUMP_EXPR_SPEC = 4, | |
129 | ||
130 | /* Dump expression's priority. */ | |
131 | DUMP_EXPR_PRIORITY = 8, | |
132 | ||
133 | /* Dump the number of times this expression was scheduled. */ | |
134 | DUMP_EXPR_SCHED_TIMES = 16, | |
135 | ||
136 | /* Dump speculative status of the expression. */ | |
137 | DUMP_EXPR_SPEC_DONE_DS = 32, | |
138 | ||
139 | /* Dump the basic block number which originated this expression. */ | |
140 | DUMP_EXPR_ORIG_BB = 64, | |
141 | ||
142 | /* Dump expression's usefulness. */ | |
143 | DUMP_EXPR_USEFULNESS = 128, | |
144 | ||
145 | /* Dump all of the above. */ | |
146 | DUMP_EXPR_ALL = (DUMP_EXPR_VINSN | DUMP_EXPR_SPEC | DUMP_EXPR_PRIORITY | |
147 | | DUMP_EXPR_SCHED_TIMES | DUMP_EXPR_SPEC_DONE_DS | |
148 | | DUMP_EXPR_ORIG_BB | DUMP_EXPR_USEFULNESS) | |
149 | }; | |
150 | ||
151 | extern void dump_expr_1 (expr_t, int); | |
152 | extern void dump_expr (expr_t); | |
153 | extern void debug_expr (expr_t); | |
154 | ||
7b3b6ae4 LC |
155 | extern void debug (expr_def &ref); |
156 | extern void debug (expr_def *ptr); | |
157 | extern void debug_verbose (expr_def &ref); | |
158 | extern void debug_verbose (expr_def *ptr); | |
159 | ||
160 | ||
b8698a0f | 161 | /* A enumeration for dumping flags of an insn. The difference from |
e855c69d AB |
162 | dump_insn_rtx_def is that these fields are for insns in stream only. */ |
163 | enum dump_insn_def | |
164 | { | |
165 | /* Dump expression of this insn. */ | |
166 | DUMP_INSN_EXPR = 2, | |
167 | ||
168 | /* Dump insn's seqno. */ | |
169 | DUMP_INSN_SEQNO = 4, | |
170 | ||
171 | /* Dump the cycle on which insn was scheduled. */ | |
172 | DUMP_INSN_SCHED_CYCLE = 8, | |
173 | ||
174 | /* Dump insn's UID. */ | |
175 | DUMP_INSN_UID = 16, | |
176 | ||
177 | /* Dump insn's pattern. */ | |
178 | DUMP_INSN_PATTERN = 32, | |
179 | ||
180 | /* Dump insn's basic block number. */ | |
181 | DUMP_INSN_BBN = 64, | |
182 | ||
183 | /* Dump all of the above. */ | |
184 | DUMP_INSN_ALL = (DUMP_INSN_EXPR | DUMP_INSN_SEQNO | DUMP_INSN_BBN | |
185 | | DUMP_INSN_SCHED_CYCLE | DUMP_INSN_UID | DUMP_INSN_PATTERN) | |
186 | }; | |
187 | ||
188 | extern void dump_insn_1 (insn_t, int); | |
189 | extern void dump_insn (insn_t); | |
190 | extern void debug_insn (insn_t); | |
191 | ||
e855c69d AB |
192 | /* When this flag is on, we are dumping to the .dot file. |
193 | When it is off, we are dumping to log. */ | |
194 | extern bool sched_dump_to_dot_p; | |
e855c69d AB |
195 | \f |
196 | ||
197 | /* Functions from sel-sched-dump.c. */ | |
67477881 | 198 | extern void sel_print (const char *fmt, ...) ATTRIBUTE_PRINTF_1; |
e855c69d AB |
199 | extern const char * sel_print_insn (const_rtx, int); |
200 | extern void free_sel_dump_data (void); | |
201 | ||
202 | extern void block_start (void); | |
203 | extern void block_finish (void); | |
204 | extern int get_print_blocks_num (void); | |
205 | extern void line_start (void); | |
206 | extern void line_finish (void); | |
207 | ||
208 | extern void sel_print_rtl (rtx x); | |
209 | extern void dump_insn_1 (insn_t, int); | |
210 | extern void dump_insn (insn_t); | |
211 | extern void dump_insn_vector (rtx_vec_t); | |
212 | extern void dump_expr (expr_t); | |
213 | extern void dump_used_regs (bitmap); | |
214 | extern void dump_av_set (av_set_t); | |
215 | extern void dump_lv_set (regset); | |
216 | extern void dump_blist (blist_t); | |
217 | extern void dump_flist (flist_t); | |
218 | extern void dump_hard_reg_set (const char *, HARD_REG_SET); | |
219 | extern void sel_debug_cfg_1 (int); | |
220 | extern void sel_debug_cfg (void); | |
221 | extern void setup_dump_cfg_params (void); | |
222 | ||
223 | /* Debug functions. */ | |
224 | extern void debug_expr (expr_t); | |
225 | extern void debug_av_set (av_set_t); | |
226 | extern void debug_lv_set (regset); | |
227 | extern void debug_ilist (ilist_t); | |
228 | extern void debug_blist (blist_t); | |
7b3b6ae4 LC |
229 | extern void debug (vec<rtx> &ref); |
230 | extern void debug (vec<rtx> *ptr); | |
e855c69d AB |
231 | extern void debug_insn_vector (rtx_vec_t); |
232 | extern void debug_hard_reg_set (HARD_REG_SET); | |
233 | extern rtx debug_mem_addr_value (rtx); | |
234 | #endif |