mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
5445e7fafa
Summary: This patch introduces -gen-automata, a backend for generating deterministic finite-state automata. DFAs are already generated by the -gen-dfa-packetizer backend. This backend is more generic and will hopefully be used to implement the DFA generation (and determinization) for the packetizer in the future. This backend allows not only generation of a DFA from an NFA (nondeterministic finite-state automaton), it also emits sidetables that allow a path through the DFA under a sequence of inputs to be analyzed, and the equivalent set of all possible NFA transitions extracted. This allows a user to not just answer "can my problem be solved?" but also "what is the solution?". Clearly this analysis is more expensive than just playing a DFA forwards so is opt-in. The DFAPacketizer has this behaviour already but this is a more compact and generic representation. Examples are bundled in unittests/TableGen/Automata.td. Some are trivial, but the BinPacking example is a stripped-down version of the original target problem I set out to solve, where we pack values (actually immediates) into bins (an immediate pool in a VLIW bundle) subject to a set of esoteric constraints. Reviewers: t.p.northover Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67968 llvm-svn: 373718
58 lines
1.4 KiB
CMake
58 lines
1.4 KiB
CMake
add_subdirectory(GlobalISel)
|
|
|
|
set(LLVM_LINK_COMPONENTS Support)
|
|
|
|
add_tablegen(llvm-tblgen LLVM
|
|
AsmMatcherEmitter.cpp
|
|
AsmWriterEmitter.cpp
|
|
AsmWriterInst.cpp
|
|
Attributes.cpp
|
|
CallingConvEmitter.cpp
|
|
CodeEmitterGen.cpp
|
|
CodeGenDAGPatterns.cpp
|
|
CodeGenHwModes.cpp
|
|
CodeGenInstruction.cpp
|
|
CodeGenMapTable.cpp
|
|
CodeGenRegisters.cpp
|
|
CodeGenSchedule.cpp
|
|
CodeGenTarget.cpp
|
|
DAGISelEmitter.cpp
|
|
DAGISelMatcherEmitter.cpp
|
|
DAGISelMatcherGen.cpp
|
|
DAGISelMatcherOpt.cpp
|
|
DAGISelMatcher.cpp
|
|
DFAEmitter.cpp
|
|
DFAPacketizerEmitter.cpp
|
|
DisassemblerEmitter.cpp
|
|
ExegesisEmitter.cpp
|
|
FastISelEmitter.cpp
|
|
FixedLenDecoderEmitter.cpp
|
|
GICombinerEmitter.cpp
|
|
GlobalISelEmitter.cpp
|
|
InfoByHwMode.cpp
|
|
InstrInfoEmitter.cpp
|
|
InstrDocsEmitter.cpp
|
|
IntrinsicEmitter.cpp
|
|
OptParserEmitter.cpp
|
|
PredicateExpander.cpp
|
|
PseudoLoweringEmitter.cpp
|
|
RISCVCompressInstEmitter.cpp
|
|
RegisterBankEmitter.cpp
|
|
RegisterInfoEmitter.cpp
|
|
SDNodeProperties.cpp
|
|
SearchableTableEmitter.cpp
|
|
SubtargetEmitter.cpp
|
|
SubtargetFeatureInfo.cpp
|
|
TableGen.cpp
|
|
Types.cpp
|
|
X86DisassemblerTables.cpp
|
|
X86EVEX2VEXTablesEmitter.cpp
|
|
X86FoldTablesEmitter.cpp
|
|
X86ModRMFilters.cpp
|
|
X86RecognizableInstr.cpp
|
|
WebAssemblyDisassemblerEmitter.cpp
|
|
CTagsEmitter.cpp
|
|
)
|
|
target_link_libraries(llvm-tblgen PRIVATE LLVMTableGenGlobalISel)
|
|
set_target_properties(llvm-tblgen PROPERTIES FOLDER "Tablegenning")
|