[PATCH] D81648: MIR Statepoint refactoring. Part 4: ISEL changes.

Denis Antrushin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 11 05:26:58 PDT 2020


dantrushin created this revision.
dantrushin added reviewers: reames, skatkov, bogner.
Herald added subscribers: llvm-commits, hiraditya, MatzeB.
Herald added a project: LLVM.

Implement variadic-def statepoint lowering.
Due to SDNode space limitation we use simple scheme: just assign first
N derived pointers to VRegs, passing others on stack slot, as in old
implementation. For that we must ensure that these `N` first pointers
are not constant or other non-relocatable objects, so we sort derived
pointers before lowering them.
New statepoint looks like this:

  reloc1,reloc2,... = STATEPOINT ..., derived1<tied-def0>, derived2<tied-def1>, ...

`N` is further limited my maximal number of tied registers machine
instruction can have (15 at the moment).

Full change set is available at D81603 <https://reviews.llvm.org/D81603>.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D81648

Files:
  llvm/include/llvm/CodeGen/FunctionLoweringInfo.h
  llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
  llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
  llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
  llvm/lib/CodeGen/TargetLoweringBase.cpp
  llvm/test/CodeGen/X86/statepoint-call-lowering.ll
  llvm/test/CodeGen/X86/statepoint-duplicates-export.ll
  llvm/test/CodeGen/X86/statepoint-invoke.ll
  llvm/test/CodeGen/X86/statepoint-no-extra-const.ll
  llvm/test/CodeGen/X86/statepoint-regs.ll
  llvm/test/CodeGen/X86/statepoint-uniqueing.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D81648.270108.patch
Type: text/x-patch
Size: 60876 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200611/6757f878/attachment-0001.bin>


More information about the llvm-commits mailing list