llvm/utils/TableGen
Evan Cheng b55c8bed9d Add a pseudo instruction REG_SEQUENCE that takes a list of registers and
sub-register indices and outputs a single super register which is formed from
a consecutive sequence of registers.

This is used as register allocation / coalescing aid and it is useful to
represent instructions that output register pairs / quads. For example,
v1024, v1025 = vload <address>
where v1024 and v1025 forms a register pair.

This really should be modelled as
v1024<3>, v1025<4> = vload <address>
but it would violate SSA property before register allocation is done.

Currently we use insert_subreg to form the super register:
v1026 = implicit_def
v1027 - insert_subreg v1026, v1024, 3
v1028 = insert_subreg v1027, v1025, 4
...
      = use v1024
      = use v1028

But this adds pseudo live interval overlap between v1024 and v1025.

We can now modeled it as
v1024, v1025 = vload <address>
v1026 = REG_SEQUENCE v1024, 3, v1025, 4
...
      = use v1024
      = use v1026

After coalescing, it will be
v1026<3>, v1025<4> = vload <address>
...
      = use v1026<3>
      = use v1026


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102815 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-01 00:28:44 +00:00
..
ARMDecoderEmitter.cpp When doing Thumb disassembly, there's no need to consider t2ADDrSPi12/t2SUBrSPi12, 2010-04-20 18:45:24 +00:00
ARMDecoderEmitter.h Change from .../Support/DataTypes.h to .../System/DataTypes.h. 2010-04-02 22:41:06 +00:00
AsmMatcherEmitter.cpp change Target.getInstructionsByEnumValue to return a reference 2010-03-19 00:34:35 +00:00
AsmMatcherEmitter.h
AsmWriterEmitter.cpp change a ton of code to not implicitly use the "O" raw_ostream 2010-04-04 04:47:45 +00:00
AsmWriterEmitter.h enhance llvm-mc -show-inst to print the enum of an instruction, like so: 2010-02-11 22:57:32 +00:00
AsmWriterInst.cpp change a ton of code to not implicitly use the "O" raw_ostream 2010-04-04 04:47:45 +00:00
AsmWriterInst.h Changed AsmWriterOperand to also include the index of the 2010-02-10 02:27:43 +00:00
CallingConvEmitter.cpp
CallingConvEmitter.h
ClangDiagnosticsEmitter.cpp Add an extra newline to separate PP directives from the contents 2010-03-18 13:16:38 +00:00
ClangDiagnosticsEmitter.h
CMakeLists.txt Add the new ARMDecodeEmitter to CMake build. 2010-04-03 04:36:43 +00:00
CodeEmitterGen.cpp Add a pseudo instruction REG_SEQUENCE that takes a list of registers and 2010-05-01 00:28:44 +00:00
CodeEmitterGen.h Revert 90628, which was incorrect. 2009-12-15 20:21:44 +00:00
CodeGenDAGPatterns.cpp stop computing InstImpInputs, it is dead 2010-04-20 06:30:25 +00:00
CodeGenDAGPatterns.h stop computing InstImpInputs, it is dead 2010-04-20 06:30:25 +00:00
CodeGenInstruction.cpp hoist some funky logic into CodeGenInstruction 2010-03-27 20:09:24 +00:00
CodeGenInstruction.h hoist some funky logic into CodeGenInstruction 2010-03-27 20:09:24 +00:00
CodeGenIntrinsics.h
CodeGenRegisters.h
CodeGenTarget.cpp Add a pseudo instruction REG_SEQUENCE that takes a list of registers and 2010-05-01 00:28:44 +00:00
CodeGenTarget.h add a new SDNPVariadic SDNP node flag, and use it in 2010-03-19 05:07:09 +00:00
DAGISelEmitter.cpp Switch pattern sorting predicate from stable sort -> sort, it 2010-03-29 02:02:45 +00:00
DAGISelEmitter.h optimize tblgen compile time by eliminating the old isel. 2010-03-01 21:49:54 +00:00
DAGISelMatcher.cpp add plumbing for handling multiple result nodes 2010-03-24 00:41:19 +00:00
DAGISelMatcher.h add plumbing for handling multiple result nodes 2010-03-24 00:41:19 +00:00
DAGISelMatcherEmitter.cpp print the complexity of the pattern being matched in the 2010-03-29 01:40:38 +00:00
DAGISelMatcherGen.cpp fix a long standing fixme, which required fixing a bunch of other 2010-03-27 20:45:15 +00:00
DAGISelMatcherOpt.cpp add plumbing for handling multiple result nodes 2010-03-24 00:41:19 +00:00
DisassemblerEmitter.cpp Second try of initial ARM/Thumb disassembler check-in. It consists of a tablgen 2010-04-02 22:27:38 +00:00
DisassemblerEmitter.h Sketch TableGen disassembler emitter, based on patch by Sean Callanan. 2009-11-25 02:13:23 +00:00
EDEmitter.cpp Fixes to edis that mark x86 call targets as 2010-04-23 22:17:17 +00:00
EDEmitter.h Added a custom TableGen backend to support the 2010-01-29 00:21:04 +00:00
FastISelEmitter.cpp add plumbing for handling multiple result nodes 2010-03-24 00:41:19 +00:00
FastISelEmitter.h
InstrEnumEmitter.cpp make inst_begin/inst_end iterate over InstructionsByEnumValue. 2010-03-19 01:00:55 +00:00
InstrEnumEmitter.h
InstrInfoEmitter.cpp Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field. 2010-04-05 03:10:20 +00:00
InstrInfoEmitter.h Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field. 2010-04-05 03:10:20 +00:00
IntrinsicEmitter.cpp Change intrinsic result type for void to store it as an empty list 2010-03-22 20:56:36 +00:00
IntrinsicEmitter.h
LLVMCConfigurationEmitter.cpp Make it not an error to specify -O* options several times. 2010-03-05 04:46:39 +00:00
LLVMCConfigurationEmitter.h
Makefile
OptParserEmitter.cpp tblgen/OptParser: Use EmitSourceFileHeader. 2010-01-04 22:03:51 +00:00
OptParserEmitter.h TableGen: Add initial backend for clang Driver's option parsing. 2009-11-18 21:29:51 +00:00
Record.cpp Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field. 2010-04-05 03:10:20 +00:00
Record.h If all the bit positions are not specified; do not decode the instructions. 2010-04-09 21:01:02 +00:00
RegisterInfoEmitter.cpp Remove unneeded ';' and a class/struct mismatch (noticed by clang). 2009-12-09 02:58:09 +00:00
RegisterInfoEmitter.h
StringToOffsetTable.h Use raw_ostream::write_escaped instead of EscapeString. 2009-10-17 20:43:19 +00:00
SubtargetEmitter.cpp Make processor FUs unique for given itinerary. This extends the limit of 32 2010-04-18 20:31:01 +00:00
SubtargetEmitter.h Make processor FUs unique for given itinerary. This extends the limit of 32 2010-04-18 20:31:01 +00:00
TableGen.cpp Second try of initial ARM/Thumb disassembler check-in. It consists of a tablgen 2010-04-02 22:27:38 +00:00
TableGenBackend.cpp
TableGenBackend.h
TGLexer.cpp Add an !eq() operator to TableGen. It operates on strings only. 2010-01-05 19:11:42 +00:00
TGLexer.h Add an !eq() operator to TableGen. It operates on strings only. 2010-01-05 19:11:42 +00:00
TGParser.cpp Add an !eq() operator to TableGen. It operates on strings only. 2010-01-05 19:11:42 +00:00
TGParser.h
TGValueTypes.cpp
X86DisassemblerShared.h fix build and while at it remove a redudant include 2009-12-19 11:52:18 +00:00
X86DisassemblerTables.cpp Fix a bunch of namespace polution. 2010-04-15 17:08:50 +00:00
X86DisassemblerTables.h Table-driven disassembler for the X86 architecture (16-, 32-, and 64-bit 2009-12-19 02:59:52 +00:00
X86ModRMFilters.h Add missing newlines at EOF (for clang++). 2009-12-19 04:16:48 +00:00
X86RecognizableInstr.cpp Fixed a bug where the disassembler would allow an immediate 2010-04-07 21:42:19 +00:00
X86RecognizableInstr.h Table-driven disassembler for the X86 architecture (16-, 32-, and 64-bit 2009-12-19 02:59:52 +00:00