[PATCH] D15667: [MachineScheduler] Handle regmasks and allow calls to be rescheduled.
Jonas Paulsson via llvm-commits
llvm-commits at lists.llvm.org
Sat Dec 19 05:34:30 PST 2015
jonpa created this revision.
jonpa added a subscriber: llvm-commits.
I have experimented with rescheduling calls in MachineScheduler, and have a
patch I would like to offer for comments and review. As far as I could
understand from the comment above isSchedBoundary(), this is something that
may be wanted generally.
Or is it otherwise a good enough option to use the pre-RA (isel) scheduler
to handle this?
This patch adds:
Handling of regmasks while building the dag, with a new ScheduleDAGInstrs
method 'addRegMaskDeps()'.
A new method 'clearCallsInDefsForReg()' has been added from code factored
out of addPhysRegDeps(), as it is also needed by addRegMaskDeps().
A new method SURegDefIsDead() that checks for a dead-def reg MO, and also
for a regmask, as opposed to calling registerDefIsDead(), which does not check
for the regmask.
A new SubtargetInfo virtual method 'MISchedRescheduleCalls()' and a new
CL option 'RescheduleCalls' to control the behaviour. Default is false, i.e.
no rescheduling of calls.
http://reviews.llvm.org/D15667
Files:
include/llvm/CodeGen/ScheduleDAGInstrs.h
include/llvm/Target/TargetSubtargetInfo.h
lib/CodeGen/MachineScheduler.cpp
lib/CodeGen/ScheduleDAGInstrs.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15667.43302.patch
Type: text/x-patch
Size: 8629 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151219/e6a902dc/attachment-0001.bin>
More information about the llvm-commits
mailing list