1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/utils/TableGen
Daniel Sanders 6d286aba49 [gicombiner] Add GIMatchTree and use it for the code generation
Summary:
GIMatchTree's job is to build a decision tree by zipping all the
GIMatchDag's together.

Each DAG is added to the tree builder as a leaf and partitioners are used
to subdivide each node until there are no more partitioners to apply. At
this point, the code generator is responsible for testing any untested
predicates and following any unvisited traversals (there shouldn't be any
of the latter as the getVRegDef partitioner handles them all).

Note that the leaves don't always fit into partitions cleanly and the
partitions may overlap as a result. This is resolved by cloning the leaf
into every partition it belongs to. One example of this is a rule that can
match one of N opcodes. The leaf for this rule would end up in N partitions
when processed by the opcode partitioner. A similar example is the
getVRegDef partitioner where having rules (add $a, $b), and (add ($a, $b), $c)
will result in the former being in the partition for successfully
following the vreg-def and failing to do so as it doesn't care which
happens.

Depends on D69151

Reviewers: bogner, volkan

Reviewed By: volkan

Subscribers: lkail, mgorny, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D69152
2020-01-03 16:23:23 -08:00
..
GlobalISel [gicombiner] Add GIMatchTree and use it for the code generation 2020-01-03 16:23:23 -08:00
AsmMatcherEmitter.cpp [TableGen] Fixes -Wrange-loop-analysis warnings 2019-12-22 18:58:32 +01:00
AsmWriterEmitter.cpp [MC] Rewrite tablegen for printInstrAlias to comiple faster, NFC 2019-12-06 15:00:18 -08:00
AsmWriterInst.cpp
AsmWriterInst.h AsmWriterOperand - fix uninitialized variable warning. NFCI. 2019-11-07 16:56:15 +00:00
Attributes.cpp
CallingConvEmitter.cpp AArch64: support arm64_32, an ILP32 slice for watchOS. 2019-09-12 10:22:23 +00:00
CMakeLists.txt [TableGen] Add backend to generate command guide for tools using libOption. 2019-11-22 14:10:17 -08:00
CodeEmitterGen.cpp [TableGen] Fixes -Wrange-loop-analysis warnings 2019-12-22 18:58:32 +01:00
CodeGenDAGPatterns.cpp TableGen: Fix assert on PatFrags with predicate code 2019-12-30 14:24:25 -05:00
CodeGenDAGPatterns.h [TableGen] Remove unused target intrinsic generation logic 2019-12-11 07:38:45 -08:00
CodeGenHwModes.cpp
CodeGenHwModes.h
CodeGenInstruction.cpp GlobalISel: Add target pre-isel instructions 2019-10-07 18:43:29 +00:00
CodeGenInstruction.h CodeGenInstruction - fix uninitialized variable warnings. NFCI. 2019-11-06 17:04:21 +00:00
CodeGenIntrinsics.h [TableGen] Remove unused target intrinsic generation logic 2019-12-11 07:38:45 -08:00
CodeGenMapTable.cpp [TableGen] CodeGenMapTable - Don't dereference a dyn_cast result. NFCI. 2019-09-17 17:32:15 +00:00
CodeGenRegisters.cpp GlobalISel: Support physical register inputs in patterns 2019-09-06 20:32:37 +00:00
CodeGenRegisters.h CodeGenRegBank - make functions const to fix cppcheck warnings. 2019-11-10 11:14:58 +00:00
CodeGenSchedule.cpp [TableGen] Improve error reporting of overlapping definitions (NFC) 2019-10-02 19:44:53 +00:00
CodeGenSchedule.h
CodeGenTarget.cpp [TableGen] Remove unused target intrinsic generation logic 2019-12-11 07:38:45 -08:00
CodeGenTarget.h Recommit "[GlobalISel] Import patterns containing INSERT_SUBREG" 2019-08-27 17:47:06 +00:00
CTagsEmitter.cpp
DAGISelEmitter.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
DAGISelMatcher.cpp
DAGISelMatcher.h TableGen: Support physical register inputs > 255 2019-07-22 15:02:34 +00:00
DAGISelMatcherEmitter.cpp TableGen: Support physical register inputs > 255 2019-07-22 15:02:34 +00:00
DAGISelMatcherGen.cpp TableGen: Remove assert that pattern results match input number 2019-11-06 16:06:37 -08:00
DAGISelMatcherOpt.cpp DAGISelMatcherOpt - TGParser::ParseOperation - silence static analyzer cast_or_null<CheckTypeMatcher> null dereference warning. NFCI. 2019-09-26 17:38:47 +00:00
DFAEmitter.cpp [TableGen] Pacify gcc-5.4 more 2019-10-07 08:23:20 +00:00
DFAEmitter.h [TableGen] Introduce a generic automaton (DFA) backend 2019-10-04 09:03:36 +00:00
DFAPacketizerEmitter.cpp [DFAPacketizer] Allow up to 64 functional units 2019-11-05 15:41:42 +00:00
DisassemblerEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
ExegesisEmitter.cpp
FastISelEmitter.cpp
FixedLenDecoderEmitter.cpp Reduce scope of variable to silence cppcheck warning. NFC 2019-11-09 22:10:09 +00:00
GICombinerEmitter.cpp [gicombiner] Add GIMatchTree and use it for the code generation 2020-01-03 16:23:23 -08:00
GlobalISelEmitter.cpp [TableGen] Fixes -Wrange-loop-analysis warnings 2019-12-22 18:58:32 +01:00
InfoByHwMode.cpp [TableGen] Support encoding per-HwMode 2019-09-19 13:39:54 +00:00
InfoByHwMode.h [TableGen] Support encoding per-HwMode 2019-09-19 13:39:54 +00:00
InstrDocsEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
InstrInfoEmitter.cpp GlobalISel: Add target pre-isel instructions 2019-10-07 18:43:29 +00:00
IntrinsicEmitter.cpp [Intrinsic] Delete tablegen rules of llvm.{sig,}{setjmp,longjmp} 2019-12-27 18:04:39 -08:00
LLVMBuild.txt
OptEmitter.cpp [TableGen] Add backend to generate command guide for tools using libOption. 2019-11-22 14:10:17 -08:00
OptEmitter.h [TableGen] Add backend to generate command guide for tools using libOption. 2019-11-22 14:10:17 -08:00
OptParserEmitter.cpp [TableGen] Fixes -Wrange-loop-analysis warnings 2019-12-22 18:58:32 +01:00
OptRSTEmitter.cpp [TableGen] Fixed 'unused but set variable' warning. NFCI 2019-11-24 20:04:03 +01:00
PredicateExpander.cpp
PredicateExpander.h
PseudoLoweringEmitter.cpp
RegisterBankEmitter.cpp
RegisterInfoEmitter.cpp TableGen: Use enum names in composeSubRegIndices table 2019-10-27 21:26:56 -07:00
RISCVCompressInstEmitter.cpp [RISCV] Added isCompressibleInst() to estimate size in getInstSizeInBytes() 2019-12-16 15:15:10 -08:00
SDNodeProperties.cpp
SDNodeProperties.h
SearchableTableEmitter.cpp Fix uninitialized variable warnings. NFCI. 2019-11-09 17:03:21 +00:00
SequenceToOffsetTable.h Relax assertions when there's really no entries. [NFC] 2019-10-22 15:26:30 -04:00
SubtargetEmitter.cpp [TableGen] Fix a bug that MCSchedClassDesc is interfered between different SchedModel 2019-10-11 08:36:54 +00:00
SubtargetFeatureInfo.cpp Use a bit of relaxed constexpr to make FeatureBitset costant intializable 2019-08-24 15:02:44 +00:00
SubtargetFeatureInfo.h
TableGen.cpp [TableGen] Remove unused target intrinsic generation logic 2019-12-11 07:38:45 -08:00
TableGenBackends.h [TableGen] Remove unused target intrinsic generation logic 2019-12-11 07:38:45 -08:00
tdtags
Types.cpp
Types.h
WebAssemblyDisassemblerEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
WebAssemblyDisassemblerEmitter.h
X86DisassemblerShared.h
X86DisassemblerTables.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
X86DisassemblerTables.h
X86EVEX2VEXTablesEmitter.cpp [X86] Consider isCodeGenOnly in the EVEX2VEX pass to make VMAXPD/PS map to the non-commutable VEX instruction. Use EVEX2VEX override to fix the scalar instructions. 2019-10-01 07:10:09 +00:00
X86FoldTablesEmitter.cpp X86FoldTablesEmitter - fix static analyzer potential invalid iterator warning. NFCI. 2019-11-06 13:31:00 +00:00
X86ModRMFilters.cpp
X86ModRMFilters.h
X86RecognizableInstr.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
X86RecognizableInstr.h