llvm-6502/utils/TableGen
Evan Cheng c4af4638df Remove ARM isel hacks that fold large immediates into a pair of add, sub, and,
and xor. The 32-bit move immediates can be hoisted out of loops by machine
LICM but the isel hacks were preventing them.

Instead, let peephole optimization pass recognize registers that are defined by
immediates and the ARM target hook will fold the immediates in.

Other changes include 1) do not fold and / xor into cmp to isel TST / TEQ
instructions if there are multiple uses. This happens when the 'and' is live
out, machine sink would have sinked the computation and that ends up pessimizing
code. The peephole pass would recognize situations where the 'and' can be
toggled to define CPSR and eliminate the comparison anyway.

2) Move peephole pass to after machine LICM, sink, and CSE to avoid blocking
important optimizations.

rdar://8663787, rdar://8241368


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119548 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17 20:13:28 +00:00
..
ARMDecoderEmitter.cpp Encode the multi-load/store instructions with their respective modes ('ia', 2010-11-16 01:16:36 +00:00
ARMDecoderEmitter.h Convert some tab stops into spaces. 2010-07-12 08:16:59 +00:00
AsmMatcherEmitter.cpp pass literals like $$1 through to the asm matcher. This isn't right yet, but doesn't hurt. 2010-11-06 22:06:03 +00:00
AsmMatcherEmitter.h Stub out assembly matcher (.s -> MCInst) tblgen backend. 2009-07-11 19:39:44 +00:00
AsmWriterEmitter.cpp Let a target specify whether it wants an assembly printer to be the MC version 2010-09-30 01:29:54 +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 factor the operand list (and related fields/operations) out of 2010-11-01 04:03:32 +00:00
AsmWriterInst.h trailing whitespace cleanup 2010-10-11 19:38:01 +00:00
CallingConvEmitter.cpp In the calling convention logic, ValVT is always a legal type, 2010-11-04 10:49:57 +00:00
CallingConvEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
ClangASTNodesEmitter.cpp Allow for creation of clang DeclNodes tables. 2010-05-30 07:21:42 +00:00
ClangASTNodesEmitter.h Fix comment 2010-06-01 23:29:39 +00:00
ClangAttrEmitter.cpp Add a way to emit StringSwitch of clang attribute spellings. 2010-10-20 01:21:53 +00:00
ClangAttrEmitter.h Add a way to emit StringSwitch of clang attribute spellings. 2010-10-20 01:21:53 +00:00
ClangDiagnosticsEmitter.cpp diaggroup categories should take precedence over diag-specific groups. 2010-05-24 21:55:47 +00:00
ClangDiagnosticsEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
CMakeLists.txt Build with RTTI and exceptions disabled. Only in GCC for now. 2010-10-17 02:26:16 +00:00
CodeEmitterGen.cpp pull the code to get the operand value out of the loop. 2010-11-15 07:09:28 +00:00
CodeEmitterGen.h split the giant encoder loop into two new helper functions. 2010-11-15 06:59:17 +00:00
CodeGenDAGPatterns.cpp factor the operand list (and related fields/operations) out of 2010-11-01 04:03:32 +00:00
CodeGenDAGPatterns.h stop computing InstImpInputs, it is dead 2010-04-20 06:30:25 +00:00
CodeGenInstruction.cpp Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, 2010-11-17 20:13:28 +00:00
CodeGenInstruction.h Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, 2010-11-17 20:13:28 +00:00
CodeGenIntrinsics.h Remove IntrWriteMem, as it's the default. Rename IntrWriteArgMem 2010-08-05 23:36:21 +00:00
CodeGenRegisters.h add (and document) the ability for alias results to have 2010-11-06 19:57:21 +00:00
CodeGenTarget.cpp a bunch of random cleanup, move a helper to CGT where it belongs. 2010-11-02 18:10:06 +00:00
CodeGenTarget.h a bunch of random cleanup, move a helper to CGT where it belongs. 2010-11-02 18:10:06 +00:00
DAGISelEmitter.cpp Stop emitting predicate functions. They are no longer used. 2010-09-03 00:39:50 +00:00
DAGISelEmitter.h Stop emitting predicate functions. They are no longer used. 2010-09-03 00:39:50 +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 Rework passing parent pointers into complexpatterns, I forgot 2010-09-21 22:00:25 +00:00
DAGISelMatcherGen.cpp factor the operand list (and related fields/operations) out of 2010-11-01 04:03:32 +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 Proper encoding for VLDM and VSTM instructions. The register lists for these 2010-11-17 04:32:08 +00:00
EDEmitter.h remove option from tablegen for building static header. 2010-07-20 19:45:21 +00:00
FastISelEmitter.cpp factor the operand list (and related fields/operations) out of 2010-11-01 04:03:32 +00:00
FastISelEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
InstrEnumEmitter.cpp make inst_begin/inst_end iterate over InstructionsByEnumValue. 2010-03-19 01:00:55 +00:00
InstrEnumEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
InstrInfoEmitter.cpp Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, 2010-11-17 20:13:28 +00:00
InstrInfoEmitter.h Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field. 2010-04-05 03:10:20 +00:00
IntrinsicEmitter.cpp Rename AccessesArguments and AccessesArgumentsReadonly, and rewrite 2010-11-10 18:30:00 +00:00
IntrinsicEmitter.h Fixes for Microsoft Visual Studio 2010, from Steven Watanabe! 2010-05-11 06:17:44 +00:00
LLVMCConfigurationEmitter.cpp Syntax tweak in llvmc: (something [a,b,c]) -> (something a, b, c). 2010-10-23 07:32:46 +00:00
LLVMCConfigurationEmitter.h This variable is never used. 2009-10-17 20:08:47 +00:00
Makefile Add an emitter to handle the list of clang statement nodes. 2010-05-05 04:13:08 +00:00
NeonEmitter.cpp Use new neon_vector_type and neon_polyvector_type attributes for Neon vectors. 2010-11-16 23:57:06 +00:00
NeonEmitter.h Add generic vector support for bitselect & element byteswap 2010-06-12 03:09:49 +00:00
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 remove the !nameconcat tblgen feature. It "shorthand" and only used in 4 places 2010-10-06 00:19:21 +00:00
Record.h remove the !nameconcat tblgen feature. It "shorthand" and only used in 4 places 2010-10-06 00:19:21 +00:00
RegisterInfoEmitter.cpp Split out register class subclassing to a separate function and clean up 2010-08-25 00:41:18 +00:00
RegisterInfoEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
StringMatcher.cpp fix a fixme in stringmatcher, having it generate nice looking code if the 2010-10-30 19:57:17 +00:00
StringMatcher.h allow specifying an indentation level for the string matcher. 2010-09-06 03:50:59 +00:00
StringToOffsetTable.h Use raw_ostream::write_escaped instead of EscapeString. 2009-10-17 20:43:19 +00:00
SubtargetEmitter.cpp Model Cortex-a9 load to SUB, RSB, ADD, ADC, SBC, RSC, CMN, MVN, or CMP 2010-09-29 22:42:35 +00:00
SubtargetEmitter.h Add support to model pipeline bypass / forwarding. 2010-09-28 23:50:49 +00:00
TableGen.cpp Add a way to emit StringSwitch of clang attribute spellings. 2010-10-20 01:21:53 +00:00
TableGenBackend.cpp Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
TableGenBackend.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
TGLexer.cpp remove the !nameconcat tblgen feature. It "shorthand" and only used in 4 places 2010-10-06 00:19:21 +00:00
TGLexer.h remove the !nameconcat tblgen feature. It "shorthand" and only used in 4 places 2010-10-06 00:19:21 +00:00
TGParser.cpp fix a crash on: 2010-10-31 19:27:15 +00:00
TGParser.h Push twines deeper into SourceMgr's error handling methods. 2010-09-27 17:42:11 +00:00
TGValueTypes.cpp Add contexts to some of the MVT APIs. No functionality change yet, just the infrastructure work needed to get the contexts to where they need to be first. 2009-08-12 00:36:31 +00:00
X86DisassemblerShared.h fix build and while at it remove a redudant include 2009-12-19 11:52:18 +00:00
X86DisassemblerTables.cpp Constify another 2 disassembler tables. 2010-10-23 09:28:42 +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 factor the operand list (and related fields/operations) out of 2010-11-01 04:03:32 +00:00
X86RecognizableInstr.h factor the operand list (and related fields/operations) out of 2010-11-01 04:03:32 +00:00