This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[1/4] Modulo scheduling support for haifa-sched


This makes haifa-sched capable of acting like a modulo-scheduler in
cooperation with a caller (expected to be in a port's md_reorg). As
explained in [0/4], most of the necessary code is already there in form
of the delay slot support that was added for C6X.

The main new entry point is set_modulo_params, which informs the
scheduler of the II and the maximum number of stages for which the
caller has unrolled the loop. The caller must then call
record_delay_slot_pair to ensure the proper distances between copies of
instructions in different loop iterations.

Once the scheduler completes a stage and all instructions from the first
iteration of the loop have been scheduled, the scheduler goes into the
epilogue mode where it only schedules insns which belong to the loop
epilogue. Once this has been successful, a valid schedule has been
found. On C6X, we'll then just pick the insns from the first loop
iteration and discard the rest; the SPLOOP hardware will automatically
execute them.

Since the scheduler will not necessarily schedule all insns when in this
mode, there is a new function resolve_dependencies which just makes sure
that all the data structures are in the state expected at the end of
schedule_block.

This patch is probably best understood together with the C6X parts in 4/4.


Bernd

Attachment: modsched1.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]