Make SMS take register pressure into account
A known problem with SMS is that it fails to take register pressure into account. Some of the extreme examples are handled by blueprint sms-register-
The SMS algorithm already has a specified (but unimplemented) way of handling register pressure: after scheduling with a particular ii, we check whether there are enough registers to satisfy that schedule, and try with a larger ii if not. (Note that this would also make SMS rather conservative, in that it would refuse to handle any loops that are likely to need spills. Since no subsequent pass would schedule the spill instructions, being conservative may be a good thing overall, but it is a little unfortunate. Note that the normal Haifa scheduler runs both before and after reload in order to cope with things like this, so the same concerns don't apply there.)
It is likely that any accurate estimation of register pressure will rely on sms-register-
Blueprint information
- Status:
- Not started
- Approver:
- None
- Priority:
- Not
- Drafter:
- Richard Sandiford
- Direction:
- Needs approval
- Assignee:
- None
- Definition:
- Discussion
- Series goal:
- None
- Implementation:
- Informational
- Milestone target:
- None
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
[michaelh1 2012-06-25] marked as 'not' as we've stopped on SMS.
[2013-05-29 matthew-
Work Items
Dependency tree
* Blueprints in grey have been implemented.