diff options
author | bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-09-02 17:53:54 +0000 |
---|---|---|
committer | bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-09-02 17:53:54 +0000 |
commit | 87ded6872697a5b3b114b23be7b41cac398df201 (patch) | |
tree | c86b8a712bb7f6e6f92e28398c0e34fa6d44b3c4 /gcc/config/c6x/c6x-sched.md.in | |
parent | 01590c6f02af5de7844c7962b367fa7ae57fab30 (diff) | |
download | gcc-87ded6872697a5b3b114b23be7b41cac398df201.tar.gz |
* config/c6x/c6x.md (collapse-ndfa, no-comb-vect): New
automata_options.
(d1, l1, s1, m1, d2, l2, s2, m2): Changed to define_query_cpu_unit.
(l1w, s1w, l2w, s2w): Define in the main automaton.
(fps1, fpl1, adddps1, adddpl1, fps2, fpl2, adddps2, adddpl2): New
units.
* config/c6x/c6x.c (c6x_sched_insn_info): Add unit_mask member.
(c6x_unit_names): Add the new units.
(c6x_unit_codes): New static array.
(UNIT_QID_D1, UNIT_QID_L1, UNIT_QID_S1, UNIT_QID_M1, UNIT_QID_FPS1,
UNIT_QID_FPL1, UNIT_QID_ADDDPS1, UNIT_QID_ADDDPL1,
UNIT_QID_SIDE_OFFSET): New macros.
(RESERVATION_S2): Adjust value.
(c6x_option_override): Compute c6x_unit_codes.
(assign_reservations): Take the unit_mask of the last instruction
into account. Detect floating point reservations by looking for
the new units. Don't assign reservations if the field is already
nonzero.
(struct c6x_sched_context): Add member prev_cycle_state_ctx.
(init_sched_state): Initialize it.
(c6x_clear_sched_context): Free it.
(insn_set_clock): Clear reservation.
(prev_cycle_state): New static variable.
(c6x_init_sched_context): Save it.
(c6x_sched_init): Allocate space for it and clear it.
(c6x_sched_dfa_pre_cycle_insn): New static function.
(c6x_dfa_new_cycle): Save state at the start of a new cycle.
(c6x_variable_issue): Only record units in the unit_mask that
were not set at the start of the cycle.
(c6x_variable_issue): Compute and store the unit_mask from the
current state.
(reorg_split_calls): Ensure the new information remains correct.
(TARGET_SCHED_DFA_NEW_CYCLE, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
TARGET_SCHED_DFA_PRE_CYCLE_INSN): Define.
* config/c6x/c6x.h (CPU_UNITS_QUERY): Define.
* config/c6x/c6x-sched.md.in (fp4_ls_N__CROSS_, adddp_ls_N__CROSS_):
Add special reservations.
* config/c6x/c6x-sched.md: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178488 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/c6x/c6x-sched.md.in')
-rw-r--r-- | gcc/config/c6x/c6x-sched.md.in | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/c6x/c6x-sched.md.in b/gcc/config/c6x/c6x-sched.md.in index 271109b9cf5..0ba71433878 100644 --- a/gcc/config/c6x/c6x-sched.md.in +++ b/gcc/config/c6x/c6x-sched.md.in @@ -178,14 +178,14 @@ (and (eq_attr "cross" "_CROSS_") (and (eq_attr "units" "ls") (eq_attr "dest_regfile" "_RF_")))) - "(s_N__CUNIT_,nothing*2,s_N_w)|(l_N__CUNIT_,nothing*2,l_N_w)") + "(fps_N_+s_N__CUNIT_,nothing*2,s_N_w)|(fpl_N_+l_N__CUNIT_,nothing*2,l_N_w)") (define_insn_reservation "adddp_ls_N__CROSS_" 7 (and (eq_attr "type" "adddp") (and (eq_attr "cross" "_CROSS_") (and (eq_attr "units" "ls") (eq_attr "dest_regfile" "_RF_")))) - "((s_N__CUNIT_)*2,nothing*3,s_N_w*2)|((l_N__CUNIT_)*2,nothing*3,l_N_w*2)") + "(adddps_N_+(s_N__CUNIT_)*2,nothing*3,s_N_w*2)|(adddpl_N_+(l_N__CUNIT_)*2,nothing*3,l_N_w*2)") (define_insn_reservation "single_dls_N__CROSS_" 1 (and (eq_attr "type" "single") |