Make SMS schedule the register moves that it creates
SMS works by creating a schedule with a certain initiation interval (ii).
This is supposed to be the number of cycles per iteration. However,
many of these schedules require new moves in order to satisfy
register dependencies. At the moment, SMS inserts all
such moves immediately before the instruction that defines the
source value. Creating them in this way disrupts the schedule,
and can lead to loops that require many more cycles than the
chosen ii.
We should instead try to schedule moves so that they do not
disrupt the initial schedule. If that fails, we should reject the
schedule and try again with a higher ii. The higher ii has the
dual benefit of requiring fewer moves and of having more
scheduling opportunities for the remaining moves.
Status:
Patches applied upstream and to Linaro 4.6.
Blueprint information
- Status:
- Complete
- Approver:
- None
- Priority:
- Medium
- Drafter:
- Richard Sandiford
- Direction:
- Needs approval
- Assignee:
- Richard Sandiford
- Definition:
- New
- Series goal:
- Accepted for 4.6
- Implementation:
- Implemented
- Milestone target:
- None
- Started by
- Richard Sandiford
- Completed by
- Richard Sandiford
Related branches
Related bugs
Sprints
Whiteboard
Work Items
Dependency tree
* Blueprints in grey have been implemented.