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 Move SetTheory from utils/TableGen into lib/TableGen so Clang can use it. 2014-06-17 13:10:38 +00:00
CodeEmitterGen.cpp Reinstate "Nuke the old JIT." 2014-09-02 22:28:02 +00:00
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 Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
CodeGenMapTable.cpp [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 07:20:03 +00:00
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 Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
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 TableGen: unique_ptr-ify RecordKeeper 2014-08-24 19:10:57 +00:00
DAGISelEmitter.cpp TableGen: Allow AddedComplexity values to be negative 2014-08-01 00:32:36 +00:00
DAGISelMatcher.cpp [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 07:20:03 +00:00
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 Simplify DFAPacketizerEmitter State copy/move semantics to use compiler defaults. 2014-04-21 22:58:00 +00:00
DisassemblerEmitter.cpp AArch64/ARM64: implement diagnosis of unpredictable loads & stores 2014-05-06 14:15:14 +00:00
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 Remove exception handling usage from tblgen. 2012-10-25 20:33:17 +00:00
module.modulemap [modules] Add module maps for LLVM. These are not quite ready for prime-time 2014-05-21 02:46:14 +00:00
OptParserEmitter.cpp Option: Propagate flags from groups to options in each group 2014-07-12 00:18:58 +00:00
PseudoLoweringEmitter.cpp TableGen: unique_ptr-ify RecordKeeper 2014-08-24 19:10:57 +00:00
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 Move SetTheory from utils/TableGen into lib/TableGen so Clang can use it. 2014-06-17 13:10:38 +00:00
TableGenBackends.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
tdtags Add TableGen ctags(1) emitter and helper script. 2013-03-21 23:40:38 +00:00
X86DisassemblerShared.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
X86DisassemblerTables.cpp [AVX512] Extended avx512_sqrt_packed (sqrt instructions) to VL subset. 2014-10-28 18:15:20 +00:00
X86DisassemblerTables.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
X86ModRMFilters.cpp Second attempt at Removing special form of AddRegFrm used by FP instructions. These instructions can be handled by MRMXr instead. 2014-01-01 14:22:37 +00:00
X86ModRMFilters.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
X86RecognizableInstr.cpp [AVX512] Support mask register in MRMDestReg format 2014-10-08 23:25:29 +00:00
X86RecognizableInstr.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00