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] |
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] |