Make SMS schedule the register moves that it creates

Registered by Richard Sandiford

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

Sprints

Whiteboard

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.