[PATCH] D14969: MachineScheduler: Allow independent scheduling of sub register defs

Matthias Braun via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 24 14:13:37 PST 2015


MatzeB created this revision.
MatzeB added a reviewer: atrick.
MatzeB added subscribers: llvm-commits, qcolombet, escha, tstellarAMD.
MatzeB set the repository for this revision to rL LLVM.

If the TrackLaneMasks policy/strategy is enabled the MachineScheduler
will build a schedule graph where definitions of independent
subregisters are no longer serialised.

Implementation comments:
- Without lane mask tracking a sub register def also counts as a use
  (except for the first one with the read-undef flag set), with lane
  mask tracking enabled this is no longer the case.
- Pressure Diffs where previously maintained per definition of a
  vreg with the help of the SSA information contained in the
  LiveIntervals.  With lanemask tracking enabled we cannot do this
  anymore and instead change the pressure diffs for all uses of the vreg
  as it becomes live/dead.  For this changed style to work correctly we
  ignore uses of instructions that define the same register again: They
  won't affect register pressure.
- With lanemask tracking we remove all read-undef flags from
  sub register defs when building the graph and re-add them later when
  all vreg lanes have become dead.

Repository:
  rL LLVM

http://reviews.llvm.org/D14969

Files:
  include/llvm/CodeGen/MachineScheduler.h
  include/llvm/CodeGen/RegisterPressure.h
  lib/CodeGen/MachineScheduler.cpp
  lib/CodeGen/RegisterPressure.cpp
  lib/CodeGen/ScheduleDAGInstrs.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D14969.41086.patch
Type: text/x-patch
Size: 20941 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151124/9edd7dbe/attachment.bin>


More information about the llvm-commits mailing list