This is an archive of the discontinued LLVM Phabricator instance.

MachineScheduler: Allow tracking of subregister lane masks.
AbandonedPublic

Authored by MatzeB on Apr 16 2015, 7:20 PM.

Details

Reviewers
qcolombet
atrick
Summary

Before this patch the machine scheduler was unable to reorder sequences like the following:

%vreg42:sub0 = ...
%vreg42:sub1 = ...

This patch series enables this. It is however disabled by default. Targets that benefit from this (probably R600) can enable it by change the "shouldTrackLaneMasks" flag in the SchedulingPolicy/Strategy.

This patch requires http://reviews.llvm.org/D9067 and http://reviews.llvm.org/D9068 to be applied first.

About the patch:

Tracking lanemasks allows the scheduler to differentiate between
different subregister defs and schedule them independently even when
they go into the same vreg.
For this to work we have to take care that the subregister defs count as
register pressure neutral except for the first one. We also have to attach the
reads-undef marker to the first subregister def and remove it from all
others.

Diff Detail

Repository
rL LLVM

Event Timeline

MatzeB updated this revision to Diff 23894.Apr 16 2015, 7:20 PM
MatzeB retitled this revision from to MachineScheduler: Allow tracking of subregister lane masks..
MatzeB updated this object.
MatzeB edited the test plan for this revision. (Show Details)
MatzeB set the repository for this revision to rL LLVM.
MatzeB added a subscriber: Unknown Object (MLST).
MatzeB abandoned this revision.Nov 24 2015, 2:21 PM

Abandoning in favor of http://reviews.llvm.org/D14969 (which has the same goal but works differently internally)