21#ifndef GCC_SEL_SCHED_IR_H
22#define GCC_SEL_SCHED_IR_H
38#define _LIST_NEXT(L) ((L)->next)
51#define _XLIST_X(L) ((L)->u.x)
52#define _XLIST_NEXT(L) (_LIST_NEXT (L))
59#define ILIST_INSN(L) ((L)->u.insn)
60#define ILIST_NEXT(L) (_LIST_NEXT (L))
162#define EXPR_VINSN(EXPR) ((EXPR)->vinsn)
163#define EXPR_INSN_RTX(EXPR) (VINSN_INSN_RTX (EXPR_VINSN (EXPR)))
164#define EXPR_PATTERN(EXPR) (VINSN_PATTERN (EXPR_VINSN (EXPR)))
165#define EXPR_LHS(EXPR) (VINSN_LHS (EXPR_VINSN (EXPR)))
166#define EXPR_RHS(EXPR) (VINSN_RHS (EXPR_VINSN (EXPR)))
167#define EXPR_TYPE(EXPR) (VINSN_TYPE (EXPR_VINSN (EXPR)))
168#define EXPR_SEPARABLE_P(EXPR) (VINSN_SEPARABLE_P (EXPR_VINSN (EXPR)))
170#define EXPR_SPEC(EXPR) ((EXPR)->spec)
171#define EXPR_USEFULNESS(EXPR) ((EXPR)->usefulness)
172#define EXPR_PRIORITY(EXPR) ((EXPR)->priority)
173#define EXPR_PRIORITY_ADJ(EXPR) ((EXPR)->priority_adj)
174#define EXPR_SCHED_TIMES(EXPR) ((EXPR)->sched_times)
175#define EXPR_ORIG_BB_INDEX(EXPR) ((EXPR)->orig_bb_index)
176#define EXPR_ORIG_SCHED_CYCLE(EXPR) ((EXPR)->orig_sched_cycle)
177#define EXPR_SPEC_DONE_DS(EXPR) ((EXPR)->spec_done_ds)
178#define EXPR_SPEC_TO_CHECK_DS(EXPR) ((EXPR)->spec_to_check_ds)
179#define EXPR_HISTORY_OF_CHANGES(EXPR) ((EXPR)->history_of_changes)
180#define EXPR_TARGET_AVAILABLE(EXPR) ((EXPR)->target_available)
181#define EXPR_NEEDS_SPEC_CHECK_P(EXPR) ((EXPR)->needs_spec_check_p)
182#define EXPR_WAS_SUBSTITUTED(EXPR) ((EXPR)->was_substituted)
183#define EXPR_WAS_RENAMED(EXPR) ((EXPR)->was_renamed)
184#define EXPR_CANT_MOVE(EXPR) ((EXPR)->cant_move)
203#define _AV_SET_EXPR(L) (&(L)->u.expr)
204#define _AV_SET_NEXT(L) (_LIST_NEXT (L))
228#define BND_TO(B) ((B)->to)
232#define BND_PTR(B) ((B)->ptr)
233#define BND_AV(B) ((B)->av)
234#define BND_AV1(B) ((B)->av1)
235#define BND_DC(B) ((B)->dc)
239#define BLIST_BND(L) (&(L)->u.bnd)
240#define BLIST_NEXT(L) (_LIST_NEXT (L))
305#define FENCE_INSN(F) ((F)->insn)
306#define FENCE_STATE(F) ((F)->state)
307#define FENCE_BNDS(F) ((F)->bnds)
308#define FENCE_PROCESSED_P(F) ((F)->processed_p)
309#define FENCE_SCHEDULED_P(F) ((F)->scheduled_p)
310#define FENCE_ISSUED_INSNS(F) ((F)->cycle_issued_insns)
311#define FENCE_CYCLE(F) ((F)->cycle)
312#define FENCE_STARTS_CYCLE_P(F) ((F)->starts_cycle_p)
313#define FENCE_AFTER_STALL_P(F) ((F)->after_stall_p)
314#define FENCE_DC(F) ((F)->dc)
315#define FENCE_TC(F) ((F)->tc)
316#define FENCE_LAST_SCHEDULED_INSN(F) ((F)->last_scheduled_insn)
317#define FENCE_ISSUE_MORE(F) ((F)->issue_more)
318#define FENCE_EXECUTING_INSNS(F) ((F)->executing_insns)
319#define FENCE_READY_TICKS(F) ((F)->ready_ticks)
320#define FENCE_READY_TICKS_SIZE(F) ((F)->ready_ticks_size)
321#define FENCE_SCHED_NEXT(F) ((F)->sched_next)
325#define FLIST_FENCE(L) (&(L)->u.fence)
326#define FLIST_NEXT(L) (_LIST_NEXT (L))
336#define FLIST_TAIL_HEAD(L) ((L)->head)
337#define FLIST_TAIL_TAILP(L) ((L)->tailp)
450#define _FOR_EACH(TYPE, ELEM, I, L) \
451 for (_list_iter_start (&(I), &(L), false); \
452 _list_iter_cond_##TYPE (*(I).lp, &(ELEM)); \
453 _list_iter_next (&(I)))
455#define _FOR_EACH_1(TYPE, ELEM, I, LP) \
456 for (_list_iter_start (&(I), (LP), true); \
457 _list_iter_cond_##TYPE (*(I).lp, &(ELEM)); \
458 _list_iter_next (&(I)))
470#define _xlist_remove(LP) (_list_remove (LP))
471#define _xlist_clear(LP) (_list_clear (LP))
499#define _xlist_iter_remove(IP) (_list_iter_remove (IP))
502#define _FOR_EACH_X(X, I, L) _FOR_EACH (x, (X), (I), (L))
503#define _FOR_EACH_X_1(X, I, LP) _FOR_EACH_1 (x, (X), (I), (LP))
514#define ilist_remove(LP) (_list_remove (LP))
515#define ilist_clear(LP) (_list_clear (LP))
543#define ilist_iter_remove(IP) (_list_iter_remove (IP))
546#define FOR_EACH_INSN(INSN, I, L) _FOR_EACH (insn, (INSN), (I), (L))
547#define FOR_EACH_INSN_1(INSN, I, LP) _FOR_EACH_1 (insn, (INSN), (I), (LP))
552#define FOR_EACH_EXPR(EXPR, I, AV) _FOR_EACH (expr, (EXPR), (I), (AV))
553#define FOR_EACH_EXPR_1(EXPR, I, AV) _FOR_EACH_1 (expr, (EXPR), (I), (AV))
572#define DEF_LIST_NEXT(L) (_LIST_NEXT (L))
573#define DEF_LIST_DEF(L) (&(L)->u.def)
575#define FOR_EACH_DEF(DEF, I, DEF_LIST) _FOR_EACH (def, (DEF), (I), (DEF_LIST))
627#define IDATA_TYPE(ID) ((ID)->type)
628#define IDATA_LHS(ID) ((ID)->lhs)
629#define IDATA_RHS(ID) ((ID)->rhs)
630#define IDATA_REG_SETS(ID) ((ID)->reg_sets)
631#define IDATA_REG_USES(ID) ((ID)->reg_uses)
632#define IDATA_REG_CLOBBERS(ID) ((ID)->reg_clobbers)
672#define VINSN_INSN_RTX(VI) ((VI)->insn_rtx)
673#define VINSN_PATTERN(VI) (PATTERN (VINSN_INSN_RTX (VI)))
675#define VINSN_ID(VI) (&((VI)->id))
676#define VINSN_HASH(VI) ((VI)->hash)
677#define VINSN_HASH_RTX(VI) ((VI)->hash_rtx)
678#define VINSN_TYPE(VI) (IDATA_TYPE (VINSN_ID (VI)))
679#define VINSN_SEPARABLE_P(VI) (VINSN_TYPE (VI) == SET)
680#define VINSN_CLONABLE_P(VI) (VINSN_SEPARABLE_P (VI) || VINSN_TYPE (VI) == USE)
681#define VINSN_UNIQUE_P(VI) (!VINSN_CLONABLE_P (VI))
682#define VINSN_LHS(VI) (IDATA_LHS (VINSN_ID (VI)))
683#define VINSN_RHS(VI) (IDATA_RHS (VINSN_ID (VI)))
684#define VINSN_REG_SETS(VI) (IDATA_REG_SETS (VINSN_ID (VI)))
685#define VINSN_REG_USES(VI) (IDATA_REG_USES (VINSN_ID (VI)))
686#define VINSN_REG_CLOBBERS(VI) (IDATA_REG_CLOBBERS (VINSN_ID (VI)))
687#define VINSN_COUNT(VI) ((VI)->count)
688#define VINSN_MAY_TRAP_P(VI) ((VI)->may_trap_p)
784#define SID(INSN) (&s_i_d[INSN_LUID (INSN)])
785#define SID_BY_UID(UID) (&s_i_d[LUID_BY_UID (UID)])
789#define INSN_ASM_P(INSN) (SID (INSN)->asm_p)
790#define INSN_SCHED_NEXT(INSN) (SID (INSN)->sched_next)
791#define INSN_ANALYZED_DEPS(INSN) (SID (INSN)->analyzed_deps)
792#define INSN_FOUND_DEPS(INSN) (SID (INSN)->found_deps)
793#define INSN_DEPS_CONTEXT(INSN) (SID (INSN)->deps_context)
794#define INSN_ORIGINATORS(INSN) (SID (INSN)->originators)
795#define INSN_ORIGINATORS_BY_UID(UID) (SID_BY_UID (UID)->originators)
796#define INSN_TRANSFORMED_INSNS(INSN) (SID (INSN)->transformed_insns)
798#define INSN_EXPR(INSN) (&SID (INSN)->expr)
799#define INSN_LIVE(INSN) (SID (INSN)->live)
800#define INSN_LIVE_VALID_P(INSN) (SID (INSN)->live_valid_p)
801#define INSN_VINSN(INSN) (EXPR_VINSN (INSN_EXPR (INSN)))
802#define INSN_TYPE(INSN) (VINSN_TYPE (INSN_VINSN (INSN)))
803#define INSN_SIMPLEJUMP_P(INSN) (INSN_TYPE (INSN) == PC)
804#define INSN_LHS(INSN) (VINSN_LHS (INSN_VINSN (INSN)))
805#define INSN_RHS(INSN) (VINSN_RHS (INSN_VINSN (INSN)))
806#define INSN_REG_SETS(INSN) (VINSN_REG_SETS (INSN_VINSN (INSN)))
807#define INSN_REG_CLOBBERS(INSN) (VINSN_REG_CLOBBERS (INSN_VINSN (INSN)))
808#define INSN_REG_USES(INSN) (VINSN_REG_USES (INSN_VINSN (INSN)))
809#define INSN_SCHED_TIMES(INSN) (EXPR_SCHED_TIMES (INSN_EXPR (INSN)))
810#define INSN_SEQNO(INSN) (SID (INSN)->seqno)
811#define INSN_AFTER_STALL_P(INSN) (SID (INSN)->after_stall_p)
812#define INSN_SCHED_CYCLE(INSN) (SID (INSN)->sched_cycle)
813#define INSN_READY_CYCLE(INSN) (SID (INSN)->ready_cycle)
814#define INSN_SPEC_CHECKED_DS(INSN) (SID (INSN)->spec_checked_ds)
819#define INSN_WS_LEVEL(INSN) (SID (INSN)->ws_level)
824#define AV_SET(INSN) (get_av_set (INSN))
825#define AV_LEVEL(INSN) (get_av_level (INSN))
826#define AV_SET_VALID_P(INSN) (AV_LEVEL (INSN) == global_level)
838#define INSN_INIT_TODO_LUID (1)
841#define INSN_INIT_TODO_SSID (2)
844#define INSN_INIT_TODO_SIMPLEJUMP (4)
849#define INSN_NOP_P(INSN) (PATTERN (INSN) == nop_pattern)
855#define INSN_IN_STREAM_P(INSN) (PREV_INSN (INSN) && NEXT_INSN (INSN))
858#define IN_CURRENT_FENCE_P(INSN) (flist_lookup (fences, INSN) != NULL)
861#define MARK_LOOP_FOR_PIPELINING(LOOP) ((LOOP)->aux = (void *)(size_t)(1))
862#define LOOP_MARKED_FOR_PIPELINING_P(LOOP) ((size_t)((LOOP)->aux))
865#define LOOP_PREHEADER_BLOCKS(LOOP) ((size_t)((LOOP)->aux) == 1 \
867 : ((vec<basic_block> *) (LOOP)->aux))
868#define SET_LOOP_PREHEADER_BLOCKS(LOOP,BLOCKS) ((LOOP)->aux \
912#define SEL_GLOBAL_BB_INFO(BB) \
913 (&sel_global_bb_info[(BB)->index])
916#define BB_LV_SET(BB) (SEL_GLOBAL_BB_INFO (BB)->lv_set)
917#define BB_LV_SET_VALID_P(BB) (SEL_GLOBAL_BB_INFO (BB)->lv_set_valid_p)
941#define SEL_REGION_BB_INFO(BB) (&sel_region_bb_info[(BB)->index])
947#define BB_NOTE_LIST(BB) (SEL_REGION_BB_INFO (BB)->note_list)
949#define BB_AV_SET(BB) (SEL_REGION_BB_INFO (BB)->av_set)
950#define BB_AV_LEVEL(BB) (SEL_REGION_BB_INFO (BB)->av_level)
951#define BB_AV_SET_VALID_P(BB) (BB_AV_LEVEL (BB) == global_level)
972#define MAX_WS (param_selsched_max_lookahead)
1046 class loop *inner_loop;
1059 if (bb == inner_loop->
header
1084 bool was_dest =
false;
1086 for (
i = 0; edges.iterate (
i, &
e);
i++)
1087 if (
e->dest == exit->
e->dest)
1094 edges.safe_push (exit->
e);
1145 class loop *this_loop;
1148 unsigned this_depth;
1154 pred_loop = this_loop;
1156 this_loop = pred_loop;
1164 for (
i = 0;
exits.iterate (
i, &e);
i++)
1167 &&
loop_depth (e->dest->loop_father) >= this_depth)
1171 if (next_exits.exists ())
1178 for (j = 0; next_exits.iterate (j, &ne); j++)
1179 exits.safe_push (ne);
1182 exits.ordered_remove (
i);
1198#define SUCCS_NORMAL (1)
1201#define SUCCS_BACK (2)
1204#define SUCCS_OUT (4)
1208#define SUCCS_SKIP_TO_LOOP_EXITS (8)
1211#define SUCCS_ALL (SUCCS_NORMAL | SUCCS_BACK | SUCCS_OUT)
1231 i.current_flags = 0;
1232 i.current_exit = -1;
1233 i.loop_exits.create (0);
1281 while (e_tmp && !check (e_tmp, ip));
1301 && flag_sel_sched_pipelining_outer_loops
1303 || BLOCK_TO_BB (ip->
bb->
index)
1304 < BLOCK_TO_BB (bb->
index)))
1320 if (check (ip->
e1, ip))
1375 int flags = ip->
flags;
1380 if (src_outside_rgn)
1435 bool succeeds_in_top_order = (BLOCK_TO_BB (ip->
bb->
index)
1436 < BLOCK_TO_BB (bb->
index));
1442 if (succeeds_in_top_order)
1446 || flag_sel_sched_pipelining_outer_loops);
1467#define FOR_EACH_SUCC_1(SUCC, ITER, INSN, FLAGS) \
1468 for ((ITER) = _succ_iter_start (&(SUCC), (INSN), (FLAGS)); \
1469 _succ_iter_cond (&(ITER), &(SUCC), (INSN), _eligible_successor_edge_p); \
1470 _succ_iter_next (&(ITER)))
1472#define FOR_EACH_SUCC(SUCC, ITER, INSN) \
1473 FOR_EACH_SUCC_1 (SUCC, ITER, INSN, SUCCS_NORMAL)
1476#define SUCC_ITER_EDGE(ITER) ((ITER)->e1)
#define EDGE_COUNT(ev)
Definition basic-block.h:305
#define ei_start(iter)
Definition basic-block.h:378
basic_block single_succ(const_basic_block bb)
Definition basic-block.h:350
#define EDGE_SUCC(bb, i)
Definition basic-block.h:308
#define BB_END(B)
Definition basic-block.h:255
bool ei_cond(edge_iterator ei, edge *p)
Definition basic-block.h:458
#define FALLTHRU_EDGE(bb)
Definition basic-block.h:286
#define EXIT_BLOCK_PTR_FOR_FN(FN)
Definition basic-block.h:195
void ei_next(edge_iterator *i)
Definition basic-block.h:423
bool flow_bb_inside_loop_p(const class loop *loop, const_basic_block bb)
Definition cfgloop.cc:840
class loop * loop_outer(const class loop *loop)
Definition cfgloop.h:547
@ LOOPS_HAVE_RECORDED_EXITS
Definition cfgloop.h:312
unsigned loop_depth(const class loop *loop)
Definition cfgloop.h:538
class loop * loop_p
Definition cfgloop.h:98
rtx_note * bb_note(basic_block bb)
Definition cfgrtl.cc:686
Definition sel-sched-ir.h:717
bitmap found_deps
Definition sel-sched-ir.h:738
bitmap originators
Definition sel-sched-ir.h:743
int seqno
Definition sel-sched-ir.h:727
insn_t sched_next
Definition sel-sched-ir.h:755
BOOL_BITFIELD asm_p
Definition sel-sched-ir.h:770
BOOL_BITFIELD live_valid_p
Definition sel-sched-ir.h:768
expr_def expr
Definition sel-sched-ir.h:721
bitmap analyzed_deps
Definition sel-sched-ir.h:733
int sched_cycle
Definition sel-sched-ir.h:759
class deps_desc deps_context
Definition sel-sched-ir.h:749
htab_t transformed_insns
Definition sel-sched-ir.h:746
int ready_cycle
Definition sel-sched-ir.h:762
ds_t spec_checked_ds
Definition sel-sched-ir.h:765
int ws_level
Definition sel-sched-ir.h:724
BOOL_BITFIELD after_stall_p
Definition sel-sched-ir.h:775
regset live
Definition sel-sched-ir.h:730
basic_block latch
Definition cfgloop.h:133
struct loop_exit * exits
Definition cfgloop.h:268
basic_block header
Definition cfgloop.h:130
Definition alloc-pool.h:482
class edge_def * edge
Definition coretypes.h:352
class bitmap_head * bitmap
Definition coretypes.h:51
#define current_loops
Definition function.h:542
#define cfun
Definition function.h:478
static struct filedep ** last
Definition genmddeps.cc:33
i
Definition poly-int.h:776
bitmap regset
Definition regset.h:38
#define INSN_P(X)
Definition rtl.h:869
basic_block BLOCK_FOR_INSN(const_rtx insn)
Definition rtl.h:1490
#define NULL_RTX
Definition rtl.h:706
rtx_insn * NEXT_INSN(const rtx_insn *insn)
Definition rtl.h:1479
#define NOTE_INSN_BASIC_BLOCK_P(INSN)
Definition rtl.h:1690
bool considered_for_pipelining_p(class loop *)
_list_t ilist_t
Definition sel-sched-ir.h:58
void av_set_iter_remove(av_set_iterator *)
bool _list_iter_cond_def(def_list_t def_list, def_t *def)
Definition sel-sched-ir.h:578
vec< sel_insn_data_def > s_i_d
int speculate_expr(expr_t, ds_t)
deps_where_t
Definition sel-sched-ir.h:879
@ DEPS_IN_LHS
Definition sel-sched-ir.h:881
@ DEPS_IN_INSN
Definition sel-sched-ir.h:880
@ DEPS_IN_NOWHERE
Definition sel-sched-ir.h:883
@ DEPS_IN_RHS
Definition sel-sched-ir.h:882
bool sel_is_loop_preheader_p(basic_block)
void exchange_data_sets(basic_block, basic_block)
void get_dest_and_mode(rtx, rtx *, machine_mode *)
void sel_redirect_edge_and_branch_force(edge, basic_block)
bool register_unavailable_p(regset, rtx)
bool in_same_ebb_p(insn_t, insn_t)
void av_set_union_and_live(av_set_t *, av_set_t *, regset, regset, insn_t)
bool _list_iter_cond_expr(av_set_t av, expr_t *exprp)
Definition sel-sched-ir.h:556
bool ilist_is_in_p(ilist_t l, insn_t insn)
Definition sel-sched-ir.h:518
vec< edge > get_all_loop_exits(basic_block bb)
Definition sel-sched-ir.h:1126
void sel_sched_region(int)
expr_def * expr_t
Definition sel-sched-ir.h:160
void change_vinsn_in_expr(expr_t, vinsn_t)
void flist_tail_init(flist_tail_t)
unsigned expr_dest_regno(expr_t)
vec< sel_region_bb_info_def > sel_region_bb_info
int tick_check_p(expr_t, deps_t, fence_t)
bool _eligible_successor_edge_p(edge e1, succ_iterator *ip)
Definition sel-sched-ir.h:1371
void _list_iter_next(_list_iterator *ip)
Definition sel-sched-ir.h:424
void av_set_code_motion_filter(av_set_t *, av_set_t)
void _xlist_add(_xlist_t *lp, rtx x)
Definition sel-sched-ir.h:464
void av_set_leave_one_nonspec(av_set_t *)
#define ILIST_NEXT(L)
Definition sel-sched-ir.h:60
#define SUCCS_SKIP_TO_LOOP_EXITS
Definition sel-sched-ir.h:1208
fence_t flist_lookup(flist_t, insn_t)
bool bookkeeping_can_be_created_if_moved_through_p(insn_t)
void _list_clear(_list_t *l)
Definition sel-sched-ir.h:395
void alloc_sched_pools(void)
bool sel_bb_empty_p(basic_block)
void setup_nop_vinsn(void)
expr_t av_set_lookup(av_set_t, vinsn_t)
#define SUCCS_OUT
Definition sel-sched-ir.h:1204
void sel_finish_global_bb_info(void)
vec< sel_global_bb_info_def > sel_global_bb_info
void set_target_context(tc_t)
void sel_save_haifa_priorities(void)
bool tidy_control_flow(basic_block, bool)
insn_t sel_gen_insn_from_expr_after(expr_t, vinsn_t, int, insn_t)
void add_dirty_fence_to_fences(flist_tail_t, insn_t, fence_t)
class loop * current_loop_nest
regset compute_live(insn_t)
insn_t get_nop_from_pool(insn_t)
insn_t sel_gen_recovery_insn_from_rtx_after(rtx, expr_t, int, insn_t)
struct flist_tail_def * flist_tail_t
Definition sel-sched-ir.h:335
void sel_add_loop_preheaders(bb_vec_t *)
bool _succ_iter_cond(succ_iterator *ip, insn_t *succp, insn_t insn, bool check(edge, succ_iterator *))
Definition sel-sched-ir.h:1253
local_trans_type
Definition sel-sched-ir.h:65
@ TRANS_SUBSTITUTION
Definition sel-sched-ir.h:66
@ TRANS_SPECULATION
Definition sel-sched-ir.h:67
#define INSN_NOP_P(INSN)
Definition sel-sched-ir.h:849
sel_global_bb_info_def * sel_global_bb_info_t
Definition sel-sched-ir.h:902
bool enable_moveup_set_path_p
struct _fence * fence_t
Definition sel-sched-ir.h:303
sel_insn_data_def * sel_insn_data_t
Definition sel-sched-ir.h:779
bool sel_bb_head_p(insn_t)
basic_block after_recovery
object_allocator< _list_node > sched_lists_pool
void sel_extend_global_bb_info(void)
rtx_insn * insn_t
Definition sel-sched-ir.h:55
vinsn_t vinsn_copy(vinsn_t, bool)
bool sel_remove_insn(insn_t, bool, bool)
bool vinsn_separable_p(vinsn_t)
#define _LIST_NEXT(L)
Definition sel-sched-ir.h:38
void return_regset_to_pool(regset)
void av_set_union_and_clear(av_set_t *, av_set_t *, insn_t)
void _list_remove(_list_t *lp)
Definition sel-sched-ir.h:386
void sel_init_pipelining(void)
bool sel_num_cfg_preds_gt_1(insn_t)
#define _AV_SET_EXPR(L)
Definition sel-sched-ir.h:203
void move_fence_to_fences(flist_t, flist_tail_t)
bool av_set_is_in_p(av_set_t, vinsn_t)
_list_t flist_t
Definition sel-sched-ir.h:324
struct succs_info * compute_succs_info(insn_t, short)
regset get_clear_regset_from_pool(void)
void _list_iter_remove(_list_iterator *ip)
Definition sel-sched-ir.h:433
tc_t create_target_context(bool)
vec< edge > get_loop_exit_edges_unique_dests(const class loop *loop)
Definition sel-sched-ir.h:1072
void free_nop_vinsn(void)
void reset_target_context(tc_t, bool)
void * tc_t
Definition sel-sched-ir.h:29
void return_nop_to_pool(insn_t, bool)
void free_data_for_scheduled_insn(insn_t)
succ_iterator _succ_iter_start(insn_t *succp, insn_t insn, int flags)
Definition sel-sched-ir.h:1216
void flist_clear(flist_t *)
void add_clean_fence_to_fences(flist_tail_t, insn_t, fence_t)
bool vinsn_cond_branch_p(vinsn_t)
void blist_add(blist_t *, insn_t, ilist_t, deps_t)
void av_set_substract_cond_branches(av_set_t *)
regset get_regset_from_pool(void)
rtx_insn * create_copy_of_insn_rtx(rtx)
bool sel_bb_end_p(insn_t)
void _list_remove_nofree(_list_t *lp)
Definition sel-sched-ir.h:378
bool in_current_region_p(basic_block)
void recompute_vinsn_lhs_rhs(vinsn_t)
void sel_unregister_cfg_hooks(void)
void blist_remove(blist_t *)
#define DEF_LIST_DEF(L)
Definition sel-sched-ir.h:573
bool inner_loop_header_p(basic_block bb)
Definition sel-sched-ir.h:1044
struct vinsn_def * vinsn_t
Definition sel-sched-ir.h:46
void sel_register_cfg_hooks(void)
void copy_data_sets(basic_block, basic_block)
av_set_t av_set_copy(av_set_t)
void ilist_add(ilist_t *lp, insn_t insn)
Definition sel-sched-ir.h:509
void free_regset_pool(void)
void merge_expr_data(expr_t, expr_t, insn_t)
bool _xlist_is_in_p(_xlist_t l, rtx x)
Definition sel-sched-ir.h:474
#define _XLIST_NEXT(L)
Definition sel-sched-ir.h:52
av_set_t get_av_set(insn_t)
int get_seqno_by_preds(rtx_insn *)
void vinsn_attach(vinsn_t)
void sel_init_invalid_data_sets(insn_t)
bool sel_insn_has_single_succ_p(insn_t, int)
basic_block sel_create_recovery_block(insn_t)
void free_data_sets(basic_block)
bool insn_at_boundary_p(insn_t)
ds_t has_dependence_p(expr_t, insn_t, ds_t **)
sel_region_bb_info_def * sel_region_bb_info_t
Definition sel-sched-ir.h:934
insn_t sel_gen_insn_from_rtx_after(rtx, expr_t, int, insn_t)
bool lhs_of_insn_equals_to_dest_p(insn_t, rtx)
loop_p get_loop_nest_for_rgn(unsigned int)
_list_t av_set_t
Definition sel-sched-ir.h:202
struct _def * def_t
Definition sel-sched-ir.h:198
void sel_set_sched_flags(void)
bool bb_ends_ebb_p(basic_block)
void av_set_split_usefulness(av_set_t, int, int)
bool insn_eligible_for_subst_p(insn_t)
expr_t merge_with_other_exprs(av_set_t *, av_set_iterator *, expr_t)
void insert_in_history_vect(vec< expr_history_def > *, unsigned, enum local_trans_type, vinsn_t, vinsn_t, ds_t)
_list_iterator def_list_iterator
Definition sel-sched-ir.h:570
void sel_init_global_and_expr(bb_vec_t)
ilist_t ilist_invert(ilist_t)
_list_iterator _xlist_iterator
Definition sel-sched-ir.h:501
void free_sched_pools(void)
void free_succs_info(struct succs_info *)
ilist_t ilist_copy(ilist_t)
void free_bb_note_pool(void)
void sel_finish_global_and_expr(void)
void merge_expr(expr_t, expr_t, insn_t)
void sel_finish_bbs(void)
expr_t av_set_element(av_set_t, int)
void purge_empty_blocks(void)
void copy_expr_onside(expr_t, expr_t)
bool _list_iter_cond_insn(ilist_t l, insn_t *ip)
Definition sel-sched-ir.h:532
void sel_clear_has_dependence(void)
bool sel_redirect_edge_and_branch(edge, basic_block)
void av_set_add(av_set_t *, expr_t)
class _sel_insn_data sel_insn_data_def
Definition sel-sched-ir.h:778
#define ILIST_INSN(L)
Definition sel-sched-ir.h:59
void def_list_add(def_list_t *, insn_t, unsigned int)
void clear_outdated_rtx_info(basic_block)
_list_t _xlist_t
Definition sel-sched-ir.h:50
struct _bnd * bnd_t
Definition sel-sched-ir.h:227
void sel_init_bbs(bb_vec_t)
void copy_expr(expr_t, expr_t)
bool sel_bb_empty_or_nop_p(basic_block bb)
Definition sel-sched-ir.h:1100
_list_iterator av_set_iterator
Definition sel-sched-ir.h:551
void _succ_iter_next(succ_iterator *ip)
Definition sel-sched-ir.h:1358
#define SUCCS_NORMAL
Definition sel-sched-ir.h:1198
sel_insn_data_def insn_sid(insn_t)
_list_t def_list_t
Definition sel-sched-ir.h:569
#define _XLIST_X(L)
Definition sel-sched-ir.h:51
_list_t blist_t
Definition sel-sched-ir.h:238
basic_block fallthru_bb_of_jump(const rtx_insn *)
bool vinsn_equal_p(vinsn_t, vinsn_t)
void sel_setup_sched_infos(void)
void vinsn_detach(vinsn_t)
rtx_insn * sel_bb_end(basic_block)
void setup_nop_and_exit_insns(void)
void sel_finish_pipelining(void)
vinsn_t create_vinsn_from_insn_rtx(rtx_insn *, bool)
void _list_iter_start(_list_iterator *ip, _list_t *lp, bool can_remove_p)
Definition sel-sched-ir.h:416
void advance_deps_context(deps_t, insn_t)
_list_iterator ilist_iterator
Definition sel-sched-ir.h:545
rtx_insn * sel_bb_head(basic_block)
void av_set_clear(av_set_t *)
int sel_vinsn_cost(vinsn_t)
void _list_iter_remove_nofree(_list_iterator *ip)
Definition sel-sched-ir.h:441
void _list_add(_list_t *lp)
Definition sel-sched-ir.h:369
#define SUCCS_BACK
Definition sel-sched-ir.h:1201
basic_block sel_split_edge(edge)
struct _list_node * _list_t
Definition sel-sched-ir.h:37
struct idata_def * idata_t
Definition sel-sched-ir.h:42
rtx_insn * create_insn_rtx_from_pattern(rtx, rtx)
bitmap blocks_to_reschedule
bitmap_head * forced_ebb_heads
void free_nop_and_exit_insns(void)
basic_block bb_next_bb(basic_block bb)
Definition sel-sched-ir.h:1480
void make_region_from_loop_preheader(vec< basic_block > *&)
rtx expr_dest_reg(expr_t)
_list_t _list_alloc(void)
Definition sel-sched-ir.h:363
int find_in_history_vect(vec< expr_history_def >, rtx, vinsn_t, bool)
insn_t sel_move_insn(expr_t, int, insn_t)
void mark_unavailable_targets(av_set_t, av_set_t, regset)
bool _list_iter_cond_x(_xlist_t l, rtx *xp)
Definition sel-sched-ir.h:488
Definition sel-sched-ir.h:209
av_set_t av1
Definition sel-sched-ir.h:220
insn_t to
Definition sel-sched-ir.h:211
av_set_t av
Definition sel-sched-ir.h:217
ilist_t ptr
Definition sel-sched-ir.h:214
deps_t dc
Definition sel-sched-ir.h:225
Definition sel-sched-ir.h:188
insn_t orig_insn
Definition sel-sched-ir.h:189
unsigned int crossed_call_abis
Definition sel-sched-ir.h:196
Definition sel-sched-ir.h:95
BOOL_BITFIELD needs_spec_check_p
Definition sel-sched-ir.h:146
int spec
Definition sel-sched-ir.h:104
ds_t spec_done_ds
Definition sel-sched-ir.h:126
int orig_bb_index
Definition sel-sched-ir.h:122
signed char target_available
Definition sel-sched-ir.h:142
vec< expr_history_def > history_of_changes
Definition sel-sched-ir.h:137
ds_t spec_to_check_ds
Definition sel-sched-ir.h:130
int priority_adj
Definition sel-sched-ir.h:115
int sched_times
Definition sel-sched-ir.h:118
int usefulness
Definition sel-sched-ir.h:109
BOOL_BITFIELD was_renamed
Definition sel-sched-ir.h:153
vinsn_t vinsn
Definition sel-sched-ir.h:97
int priority
Definition sel-sched-ir.h:112
int orig_sched_cycle
Definition sel-sched-ir.h:134
BOOL_BITFIELD was_substituted
Definition sel-sched-ir.h:150
BOOL_BITFIELD cant_move
Definition sel-sched-ir.h:156
Definition sel-sched-ir.h:246
ilist_t bnds
Definition sel-sched-ir.h:262
int ready_ticks_size
Definition sel-sched-ir.h:280
insn_t insn
Definition sel-sched-ir.h:248
int cycle
Definition sel-sched-ir.h:254
tc_t tc
Definition sel-sched-ir.h:270
rtx_insn * sched_next
Definition sel-sched-ir.h:289
int * ready_ticks
Definition sel-sched-ir.h:277
BOOL_BITFIELD scheduled_p
Definition sel-sched-ir.h:295
rtx_insn * last_scheduled_insn
Definition sel-sched-ir.h:283
BOOL_BITFIELD processed_p
Definition sel-sched-ir.h:292
deps_t dc
Definition sel-sched-ir.h:266
BOOL_BITFIELD starts_cycle_p
Definition sel-sched-ir.h:298
int issue_more
Definition sel-sched-ir.h:286
vec< rtx_insn *, va_gc > * executing_insns
Definition sel-sched-ir.h:273
state_t state
Definition sel-sched-ir.h:251
BOOL_BITFIELD after_stall_p
Definition sel-sched-ir.h:301
int cycle_issued_insns
Definition sel-sched-ir.h:258
Definition sel-sched-ir.h:404
bool removed_p
Definition sel-sched-ir.h:412
_list_t * lp
Definition sel-sched-ir.h:406
bool can_remove_p
Definition sel-sched-ir.h:409
Definition sel-sched-ir.h:341
void * data
Definition sel-sched-ir.h:352
insn_t insn
Definition sel-sched-ir.h:347
struct _fence fence
Definition sel-sched-ir.h:350
_list_t next
Definition sel-sched-ir.h:342
rtx x
Definition sel-sched-ir.h:346
expr_def expr
Definition sel-sched-ir.h:349
struct _bnd bnd
Definition sel-sched-ir.h:348
Definition basic-block.h:117
vec< edge, va_gc > * succs
Definition basic-block.h:120
basic_block next_bb
Definition basic-block.h:133
class loop * loop_father
Definition basic-block.h:126
int index
Definition basic-block.h:147
Definition loop-invariant.cc:88
Definition basic-block.h:366
Definition sel-sched-ir.h:73
enum local_trans_type type
Definition sel-sched-ir.h:87
ds_t spec_ds
Definition sel-sched-ir.h:84
vinsn_t old_expr_vinsn
Definition sel-sched-ir.h:78
unsigned uid
Definition sel-sched-ir.h:75
vinsn_t new_expr_vinsn
Definition sel-sched-ir.h:81
Definition sel-sched-ir.h:330
flist_t head
Definition sel-sched-ir.h:331
flist_t * tailp
Definition sel-sched-ir.h:332
Definition collect2.cc:168
Definition sel-sched-ir.h:592
regset reg_uses
Definition sel-sched-ir.h:624
int type
Definition sel-sched-ir.h:603
rtx rhs
Definition sel-sched-ir.h:609
regset reg_sets
Definition sel-sched-ir.h:620
rtx lhs
Definition sel-sched-ir.h:606
regset reg_clobbers
Definition sel-sched-ir.h:622
struct loop_exit * next
Definition cfgloop.h:83
edge e
Definition cfgloop.h:79
Definition sel-sched-ir.h:889
regset lv_set
Definition sel-sched-ir.h:894
bool lv_set_valid_p
Definition sel-sched-ir.h:899
Definition sel-sched-ir.h:921
av_set_t av_set
Definition sel-sched-ir.h:928
rtx_insn * note_list
Definition sel-sched-ir.h:924
int av_level
Definition sel-sched-ir.h:931
Definition genautomata.cc:669
Definition sel-sched-ir.h:979
vec< edge > loop_exits
Definition sel-sched-ir.h:1005
short current_flags
Definition sel-sched-ir.h:1001
bool bb_end
Definition sel-sched-ir.h:981
short flags
Definition sel-sched-ir.h:997
edge e2
Definition sel-sched-ir.h:987
basic_block bb
Definition sel-sched-ir.h:993
edge e1
Definition sel-sched-ir.h:984
int current_exit
Definition sel-sched-ir.h:1004
edge_iterator ei
Definition sel-sched-ir.h:990
Definition sel-sched-ir.h:1010
vec< int > probs_ok
Definition sel-sched-ir.h:1019
insn_vec_t succs_ok
Definition sel-sched-ir.h:1015
insn_vec_t succs_other
Definition sel-sched-ir.h:1022
int all_succs_n
Definition sel-sched-ir.h:1028
int succs_ok_n
Definition sel-sched-ir.h:1031
short flags
Definition sel-sched-ir.h:1012
int all_prob
Definition sel-sched-ir.h:1025
Definition sel-sched-ir.h:648
unsigned hash
Definition sel-sched-ir.h:657
rtx_insn * insn_rtx
Definition sel-sched-ir.h:650
bool may_trap_p
Definition sel-sched-ir.h:669
int cost
Definition sel-sched-ir.h:666
unsigned hash_rtx
Definition sel-sched-ir.h:660
int count
Definition sel-sched-ir.h:663
#define NULL
Definition system.h:50
#define gcc_assert(EXPR)
Definition system.h:814
#define BOOL_BITFIELD
Definition system.h:896
constexpr vnull vNULL
Definition vec.h:569