[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