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
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
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
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
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
InstrEnumEmitter.cpp make inst_begin/inst_end iterate over InstructionsByEnumValue. 2010-03-19 01:00:55 +00:00
InstrEnumEmitter.h
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
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
OptParserEmitter.h
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
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
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
TableGenBackend.h
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
X86DisassemblerShared.h
X86DisassemblerTables.cpp Constify another 2 disassembler tables. 2010-10-23 09:28:42 +00:00
X86DisassemblerTables.h
X86ModRMFilters.h
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