llvm-6502/utils/TableGen
Jakob Stoklund Olesen babf0569e2 Teach TableGen to infer missing register classes.
The set of register classes should be closed under sub-register
operations and intersections. That will allow the register allocator to
model combinations of constraints accurately.

This patch implements the easiest form of register class inference:  For
every register class, and for every sub-register SubIdx, the subset of
registers in RC that have a SubIdx sub-register should also be a register
class.

This does create some new register classes for the targets in the tree:

ARM gets a new QQQQPR_with_ssub_0.  This class was omitted from the .td
file on purpose because it only has two registers.  InstrEmitter and
RegisterCoalescer have safeguards against selecting too small register
classes, so it is harmless.

PowerPC gets a G8RC_with_sub_32 class because LR is not a sub_32
sub-register of LR8.  I think that might be an omission?

X86 puts RIP in the GR64 class, and since that register doesn't have
8-bit sub-registers, we get:

  GR64_with_sub_8bit
  GR64_TC_with_sub_8bit
  GR64_NOREX_with_sub_8bit
  GR64_TC_with_sub_8bit_hi

The various CodeGen classes have already been fixed so adding new
register classes should not affect compile time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141084 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 15:28:49 +00:00
..
ARMDecoderEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
ARMDecoderEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
AsmMatcherEmitter.cpp TableGen: Privatize CodeGenRegisterClass::TheDef and Name. 2011-10-04 15:28:08 +00:00
AsmMatcherEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
AsmWriterEmitter.cpp TableGen: Privatize CodeGenRegisterClass::TheDef and Name. 2011-10-04 15:28:08 +00:00
AsmWriterEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
AsmWriterInst.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
AsmWriterInst.h
CallingConvEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
CallingConvEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
ClangASTNodesEmitter.cpp TableGen: Keep the order of DECL_CONTEXT() for DeclNodes.td. RecordVector may be used instead of RecordSet. 2011-04-11 23:20:28 +00:00
ClangASTNodesEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
ClangAttrEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
ClangAttrEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
ClangDiagnosticsEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
ClangDiagnosticsEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
ClangSACheckersEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
ClangSACheckersEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
CMakeLists.txt Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
CodeEmitterGen.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
CodeEmitterGen.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
CodeGenDAGPatterns.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
CodeGenDAGPatterns.h Unconstify Inits 2011-07-29 22:43:06 +00:00
CodeGenInstruction.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
CodeGenInstruction.h Restore hasPostISelHook tblgen flag. 2011-09-20 18:22:31 +00:00
CodeGenIntrinsics.h Change how tblgen generates attributes for intrinsics to use a single 2011-05-28 06:31:34 +00:00
CodeGenRegisters.cpp Teach TableGen to infer missing register classes. 2011-10-04 15:28:49 +00:00
CodeGenRegisters.h Teach TableGen to infer missing register classes. 2011-10-04 15:28:49 +00:00
CodeGenTarget.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
CodeGenTarget.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
DAGISelEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
DAGISelEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
DAGISelMatcher.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
DAGISelMatcher.h Rework our internal representation of node predicates to expose more 2011-04-17 21:38:24 +00:00
DAGISelMatcherEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
DAGISelMatcherGen.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
DAGISelMatcherOpt.cpp Remove unused STL header includes. 2011-04-23 19:53:52 +00:00
DisassemblerEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
DisassemblerEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
EDEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
EDEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
FastISelEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
FastISelEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
FixedLenDecoderEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
FixedLenDecoderEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
InstrEnumEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
InstrEnumEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
InstrInfoEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
InstrInfoEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
IntrinsicEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
IntrinsicEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
Makefile Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
NeonEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
NeonEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
OptParserEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
OptParserEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
PseudoLoweringEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
PseudoLoweringEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
RegisterInfoEmitter.cpp TableGen: Privatize CodeGenRegisterClass::TheDef and Name. 2011-10-04 15:28:08 +00:00
RegisterInfoEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
SetTheory.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
SetTheory.h Unconstify Inits 2011-07-29 22:43:06 +00:00
StringMatcher.cpp
StringMatcher.h
StringToOffsetTable.h
SubtargetEmitter.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
SubtargetEmitter.h Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
TableGen.cpp Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
TGValueTypes.cpp Remove unused STL header includes. 2011-04-23 19:53:52 +00:00
X86DisassemblerShared.h
X86DisassemblerTables.cpp Add support in the disassembler for ignoring the L-bit on certain VEX instructions. Mark instructions that have this behavior. Fixes PR10676. 2011-10-04 06:30:42 +00:00
X86DisassemblerTables.h Add support in the disassembler for ignoring the L-bit on certain VEX instructions. Mark instructions that have this behavior. Fixes PR10676. 2011-10-04 06:30:42 +00:00
X86ModRMFilters.h
X86RecognizableInstr.cpp Add support in the disassembler for ignoring the L-bit on certain VEX instructions. Mark instructions that have this behavior. Fixes PR10676. 2011-10-04 06:30:42 +00:00
X86RecognizableInstr.h Add support in the disassembler for ignoring the L-bit on certain VEX instructions. Mark instructions that have this behavior. Fixes PR10676. 2011-10-04 06:30:42 +00:00