diff options
author | Reza Yazdani <reza.yazdani@amd.com> | 2010-09-09 23:11:36 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2010-09-09 23:11:36 +0000 |
commit | 7942e47efd91b52b609ff64303c5f2e24701eab0 (patch) | |
tree | 1454bef85bf406eb8a5c96db18f42d3f309e3f46 /gcc/sched-int.h | |
parent | be1c764ef44e1b2e1b04f49f24b699b3e2911c2f (diff) | |
download | gcc-7942e47efd91b52b609ff64303c5f2e24701eab0.tar.gz |
Dispatch scheduling for AMD Bulldozer processors.
2010-09-09 Reza Yazdani <reza.yazdani@amd.com>
* config/i386/i386.c: Include sched-int.h.
(TARGET_SCHED_DISPATCH): Defined.
(TARGET_SCHED_DISPATCH_DO): Defined.
(DISPATCH_WINDOW_SIZE): Defined.
(MAX_DISPATCH_WINDOWS): Defined.
(MAX_INSN): Defined.
(MAX_IMM): Defined.
(MAX_IMM_SIZE): Defined.
(MAX_IMM_32): Defined.
(MAX_IMM_64): Defined.
(MAX_LOAD): Defined.
(MAX_STORE): Defined.
(BIG): Defined.
(dispatch_group): New.
(num_allowable_groups): New.
(group_name): New.
(sched_insn_info_s): New.
(dispatch_windows_s): New.
(imm_info_s): New.
(dispatch_window_list): New.
(dispatch_window_list1): New.
(get_mem_group): New.
(is_cmp): New.
(dispatch_violation): New.
(is_branch): New.
(is_prefetch): New.
(init_window): New.
(allocate_window): New.
(init_dispatch_sched): New.
(is_end_basic_block): New.
(process_end_window): New.
(allocate_next_window): New.
(find_constant_1): New.
(find_constant): New.
(get_num_immediates): New.
(has_immediate): New.
(get_insn_path): New.
(get_insn_group): New.
(count_num_restricted): New.
(fits_dispatch_window): New.
(add_insn_window): New.
(add_to_dispatch_window): New.
(debug_dispatch_window_file): New.
(debug_dispatch_window): New.
(debug_insn_dispatch_info_file): New.
(debug_ready_dispatch): New.
(do_dispatch): New.
(has_dispatch): New.
* config/i386/i386.h (debug_ready_dispatch): Declared.
(debug_dispatch_window): Declared.
* config/i386/i386.opt (mdispatch-scheduler): New flag.
* doc/tm.texi.in (TARGET_SCHED_DISPATCH): New.
(TARGET_SCHED_DISPATCH_DO): New.
* doc/tm.texi: Regererated.
* haifa-sched.c (choose_ready): Call targetm.sched.dispatch and
ready_remove_first_dispatch
(schedule_block): Call targetm.sched.dispatch and
targetm.sched.dispatch_do.
(sched_init): Call targetm.sched.dispatch and
targetm.sched.dispatch_do.
(ready_remove_first_dispatch): New.
(number_in_ready): New.
(get_ready_element): New.
* hooks.c (hook_bool_rtx_int_false): New.
(hook_void_rtx_int): New.
* hooks.h (hook_bool_rtx_int_false): Declared.
(hook_void_rtx_int): Declared.
* sched-int.h (IS_DISPATCH_ON): Defined.
(IS_CMP): Defined.
(DISPATCH_VIOLATION): Defined.
(FITS_DISPATCH_WINDOW): Defined.
(DISPATCH_INIT): Defined.
(ADD_TO_DISPATCH_WINDOW): Defined.
(get_ready_element): Declared.
(number_in_ready): Declared.
* target.def (dispatch): Defined.
(dispatch_do): Defined.
From-SVN: r164133
Diffstat (limited to 'gcc/sched-int.h')
-rw-r--r-- | gcc/sched-int.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/sched-int.h b/gcc/sched-int.h index 147e264848a..fd2e15d70cf 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -1269,6 +1269,8 @@ extern void add_block (basic_block, basic_block); extern rtx bb_note (basic_block); extern void concat_note_lists (rtx, rtx *); extern rtx sched_emit_insn (rtx); +extern rtx get_ready_element (int); +extern int number_in_ready (void); /* Types and functions in sched-rgn.c. */ @@ -1477,6 +1479,13 @@ sd_iterator_next (sd_iterator_def *it_ptr) sd_iterator_cond (&(ITER), &(DEP)); \ sd_iterator_next (&(ITER))) +#define IS_DISPATCH_ON 1 +#define IS_CMP 2 +#define DISPATCH_VIOLATION 3 +#define FITS_DISPATCH_WINDOW 4 +#define DISPATCH_INIT 5 +#define ADD_TO_DISPATCH_WINDOW 6 + extern int sd_lists_size (const_rtx, sd_list_types_def); extern bool sd_lists_empty_p (const_rtx, sd_list_types_def); extern void sd_init_insn (rtx); |