llvm-6502/utils/TableGen
Philip Reames 78cc6fcb01 [Statepoints 2/4] Statepoint infrastructure for garbage collection: MI & x86-64 Backend
This is the second patch in a small series.  This patch contains the MachineInstruction and x86-64 backend pieces required to lower Statepoints.  It does not include the code to actually generate the STATEPOINT machine instruction and as a result, the entire patch is currently dead code.  I will be submitting the SelectionDAG parts within the next 24-48 hours.  Since those pieces are by far the most complicated, I wanted to minimize the size of that patch.  That patch will include the tests which exercise the functionality in this patch.  The entire series can be seen as one combined whole in http://reviews.llvm.org/D5683.

The STATEPOINT psuedo node is generated after all gc values are explicitly spilled to stack slots.  The purpose of this node is to wrap an actual call instruction while recording the spill locations of the meta arguments used for garbage collection and other purposes.  The STATEPOINT is modeled as modifing all of those locations to prevent backend optimizations from forwarding the value from before the STATEPOINT to after the STATEPOINT.  (Doing so would break relocation semantics for collectors which wish to relocate roots.)

The implementation of STATEPOINT is closely modeled on PATCHPOINT.  Eventually, much of the code in this patch will be removed.  The long term plan is to merge the functionality provided by statepoints and patchpoints.  Merging their implementations in the backend is likely to be a good starting point.

Reviewed by: atrick, ributzka



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223085 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-01 22:52:56 +00:00
..
AsmMatcherEmitter.cpp Remove indirection of vector<T*> in favor of deque<T> 2014-11-29 18:13:39 +00:00
AsmWriterEmitter.cpp Remove indirection of vector<T*> in favor of deque<T> 2014-11-29 18:13:39 +00:00
AsmWriterInst.cpp Remove dead code. 2014-11-25 20:11:29 +00:00
AsmWriterInst.h Remove dead code. 2014-11-25 20:11:29 +00:00
CallingConvEmitter.cpp [tablegen] Add CustomCallingConv and use it to tablegen-erate the outermost parts of the Mips O32 implementation 2014-11-01 17:38:22 +00:00
CMakeLists.txt
CodeEmitterGen.cpp
CodeGenDAGPatterns.cpp Remove neverHasSideEffects support from TableGen CodeGenInstruction. Everyone should use hasSideEffects now. 2014-11-26 04:11:14 +00:00
CodeGenDAGPatterns.h Revert "Improve memory ownership/management in TableGen by unique_ptrifying TreePattern's Tree member." 2014-11-17 22:55:41 +00:00
CodeGenInstruction.cpp Remove neverHasSideEffects support from TableGen CodeGenInstruction. Everyone should use hasSideEffects now. 2014-11-26 04:11:14 +00:00
CodeGenInstruction.h Remove neverHasSideEffects support from TableGen CodeGenInstruction. Everyone should use hasSideEffects now. 2014-11-26 04:11:14 +00:00
CodeGenIntrinsics.h
CodeGenMapTable.cpp
CodeGenRegisters.cpp Remove some unnecessary vector::reserve/assign calls. 2014-11-29 18:13:42 +00:00
CodeGenRegisters.h Remove indirection of vector<T*> in favor of deque<T> 2014-11-29 18:13:39 +00:00
CodeGenSchedule.cpp Update SetVector to rely on the underlying set's insert to return a pair<iterator, bool> 2014-11-19 07:49:26 +00:00
CodeGenSchedule.h
CodeGenTarget.cpp [Statepoints 2/4] Statepoint infrastructure for garbage collection: MI & x86-64 Backend 2014-12-01 22:52:56 +00:00
CodeGenTarget.h Use unique_ptr to simplify deletion. 2014-11-28 20:30:37 +00:00
CTagsEmitter.cpp
DAGISelEmitter.cpp
DAGISelMatcher.cpp
DAGISelMatcher.h Fix missing C++ mode comment 2014-11-02 23:46:44 +00:00
DAGISelMatcherEmitter.cpp Use unique_ptr to handle ownership of TreePatterns in CodeGenDAGPatterns::PatternFragments 2014-11-13 21:40:02 +00:00
DAGISelMatcherGen.cpp Support REG_SEQUENCE in tablegen. 2014-11-02 23:46:51 +00:00
DAGISelMatcherOpt.cpp Make StringSet::insert return pair<iterator, bool> like other self-associative containers 2014-11-19 02:56:00 +00:00
DFAPacketizerEmitter.cpp
DisassemblerEmitter.cpp
FastISelEmitter.cpp Change order of tablegen generated fast-isel instruction code to be 2014-11-14 21:05:45 +00:00
FixedLenDecoderEmitter.cpp Reduce code duplication a bit. 2014-09-27 05:26:42 +00:00
InstrInfoEmitter.cpp Tablegen output formatting fixes. 2014-11-23 09:40:10 +00:00
IntrinsicEmitter.cpp Revert "Masked Vector Load and Store Intrinsics." 2014-11-28 21:29:14 +00:00
LLVMBuild.txt
Makefile
module.modulemap
OptParserEmitter.cpp
PseudoLoweringEmitter.cpp
RegisterInfoEmitter.cpp Remove indirection of vector<T*> in favor of deque<T> 2014-11-29 18:13:39 +00:00
SequenceToOffsetTable.h Reduce size of some tables in tablegen register info output. 2014-11-22 18:30:18 +00:00
SubtargetEmitter.cpp Update SetVector to rely on the underlying set's insert to return a pair<iterator, bool> 2014-11-19 07:49:26 +00:00
TableGen.cpp
TableGenBackends.h
tdtags
X86DisassemblerShared.h
X86DisassemblerTables.cpp [AVX512] Extended avx512_sqrt_packed (sqrt instructions) to VL subset. 2014-10-28 18:15:20 +00:00
X86DisassemblerTables.h
X86ModRMFilters.cpp
X86ModRMFilters.h
X86RecognizableInstr.cpp [AVX512] Support mask register in MRMDestReg format 2014-10-08 23:25:29 +00:00
X86RecognizableInstr.h