llvm-project/llvm/utils/TableGen
Jay Foad b8bf94df25 [TableGen] Fix excessive compile time issue in FixedLenDecoderEmitter
This patch reduces the time taken for clang to compile the generated
disassembler for an out-of-tree target with InsnType bigger than 64 bits
from 4m30s to 48s.

D67686 did a similar thing for CodeEmitterGen.

The idea is to tweak the API of the APInt-like InsnType class so that
we don't need so many temporary InsnTypes. This takes advantage of the
rule stated in D52100 that currently "no string of bits extracted
from the encoding may exceeed 64-bits", so we can use uint64_t for some
temporaries.

D52100 goes on to say that "fields are still permitted to exceed 64-bits
so long as they aren't one contiguous string of bits". This patch breaks
that by always using a "uint64_t tmp" in the generated decodeToMCInst,
but it should be easy to fix in FilterChooser::emitBinaryParser by
choosing to use a different type of tmp based on the known total field
width.

Differential Revision: https://reviews.llvm.org/D98046
2021-03-17 09:28:50 +00:00
..
GlobalISel Renovate CMake files in the `llvm-exegesis` tool. 2021-02-10 14:22:55 -05:00
AsmMatcherEmitter.cpp [TableGen] Use ListSeparator (NFC) 2021-02-13 20:41:36 -08:00
AsmWriterEmitter.cpp [llvm] Use isAlpha/isAlnum (NFC) 2021-01-22 23:25:03 -08:00
AsmWriterInst.cpp [llvm] Use isAlpha/isAlnum (NFC) 2021-01-22 23:25:03 -08:00
AsmWriterInst.h
Attributes.cpp
CMakeLists.txt [M68k][TableGen](1/8) TableGen related changes 2021-03-08 12:30:56 -08:00
CTagsEmitter.cpp
CallingConvEmitter.cpp [TableGen] Use ListSeparator (NFC) 2021-02-25 19:54:36 -08:00
CodeBeadsGen.cpp [M68k][TableGen](1/8) TableGen related changes 2021-03-08 12:30:56 -08:00
CodeEmitterGen.cpp [TableGen] Fix warning when compiling generated MCCodeEmitter 2021-03-04 18:35:25 +00:00
CodeGenDAGPatterns.cpp [RISCV] Add support for VECTOR_REVERSE for scalable vector types. 2021-03-09 10:03:45 -08:00
CodeGenDAGPatterns.h [TableGen] Make all the fields in PatternToMatch private. NFCI 2021-02-06 22:34:01 -08:00
CodeGenHwModes.cpp
CodeGenHwModes.h
CodeGenInstruction.cpp [llvm] Remove redundant string initialization (NFC) 2021-01-12 21:43:46 -08:00
CodeGenInstruction.h
CodeGenIntrinsics.h [TableGen] Add IntrNoMerge as intrinsic property 2021-03-02 09:04:50 -08:00
CodeGenMapTable.cpp [llvm] Remove redundant string initialization (NFC) 2021-01-12 21:43:46 -08:00
CodeGenRegisters.cpp [TableGen] Make the map in InfoByHwMode protected. NFCI 2021-02-11 21:16:10 -08:00
CodeGenRegisters.h [TableGen] Use range-based for loops (NFC) 2021-02-01 20:55:09 -08:00
CodeGenSchedule.cpp [TableGen] Use ListSeparator (NFC) 2021-02-10 20:01:20 -08:00
CodeGenSchedule.h [TableGen] Fix D90844 introduced non-determinism due to iteration over a std::map over allocated object pointers 2020-12-18 12:08:16 -08:00
CodeGenTarget.cpp [TableGen] Add IntrNoMerge as intrinsic property 2021-03-02 09:04:50 -08:00
CodeGenTarget.h [TableGen] Drop redundant const from return types (NFC) 2021-01-17 10:39:49 -08:00
DAGISelEmitter.cpp [TableGen] Make all the fields in PatternToMatch private. NFCI 2021-02-06 22:34:01 -08:00
DAGISelMatcher.cpp [TableGen] Add isContradictoryImpl implementation to CheckCondCodeMatcher and CheckChild2CondCodeMatcher. 2021-01-26 19:44:57 -08:00
DAGISelMatcher.h [TableGen] Add isContradictoryImpl implementation to CheckCondCodeMatcher and CheckChild2CondCodeMatcher. 2021-01-26 19:44:57 -08:00
DAGISelMatcherEmitter.cpp [TableGen] Avoid repeated TreePredicateFn::getCodeToRunOnSDNode() calls in MatcherTableEmitter::EmitNodePredicatesFunction loop. NFCI. 2021-03-01 15:43:37 +00:00
DAGISelMatcherGen.cpp [TableGen] Make all the fields in PatternToMatch private. NFCI 2021-02-06 22:34:01 -08:00
DAGISelMatcherOpt.cpp
DFAEmitter.cpp [TableGen] Use ListSeparator (NFC) 2021-02-18 22:46:39 -08:00
DFAEmitter.h
DFAPacketizerEmitter.cpp [TableGen] Indentation and whitespace fixes in generated code. NFC. 2020-11-06 16:10:57 +00:00
DirectiveEmitter.cpp [Flang][OpenMP][OpenACC] Add function for mapping parser clause classes with the corresponding clause kind. 2021-03-17 12:20:43 +05:30
DisassemblerEmitter.cpp
ExegesisEmitter.cpp [TableGen] Indentation and whitespace fixes in generated code. NFC. 2020-11-06 16:10:57 +00:00
FastISelEmitter.cpp [TableGen] Use ListSeparator (NFC) 2021-02-20 21:46:01 -08:00
FixedLenDecoderEmitter.cpp [TableGen] Fix excessive compile time issue in FixedLenDecoderEmitter 2021-03-17 09:28:50 +00:00
GICombinerEmitter.cpp [llvm] Use llvm::any_of (NFC) 2021-01-04 11:42:47 -08:00
GlobalISelEmitter.cpp [TableGen/GlobalISel] Emit MI_predicate custom code for PatFrags (not only PatFrag) 2021-03-16 12:44:09 +01:00
InfoByHwMode.cpp [TableGen] Use ListSeparator (NFC) 2021-02-09 22:14:27 -08:00
InfoByHwMode.h [TableGen] Make the map in InfoByHwMode protected. NFCI 2021-02-11 21:16:10 -08:00
InstrDocsEmitter.cpp [TableGen] Use ListSeparator (NFC) 2021-02-01 20:55:07 -08:00
InstrInfoEmitter.cpp [M68k][TableGen](1/8) TableGen related changes 2021-03-08 12:30:56 -08:00
IntrinsicEmitter.cpp [TableGen] Add IntrNoMerge as intrinsic property 2021-03-02 09:04:50 -08:00
OptEmitter.cpp
OptEmitter.h
OptParserEmitter.cpp [TableGen] Drop redundant const from return types (NFC) 2021-01-17 10:39:49 -08:00
OptRSTEmitter.cpp
PredicateExpander.cpp [ARM][SchedModels] Convert IsPredicatedPred to MCSchedPredicate 2020-10-19 11:37:54 +03:00
PredicateExpander.h [ARM][SchedModels] Convert IsPredicatedPred to MCSchedPredicate 2020-10-19 11:37:54 +03:00
PseudoLoweringEmitter.cpp [TableGen] Add frontend/backend phase timing capability. 2020-11-14 10:10:29 -05:00
RISCVCompressInstEmitter.cpp [RISCV] Add way to mark CompressPats that should only be used for compressing. 2021-01-20 09:20:15 -08:00
RegisterBankEmitter.cpp [TableGen] RegisterBankEmitter - Pass Twine by const reference instead of by value. NFCI. 2021-01-06 14:22:05 +00:00
RegisterInfoEmitter.cpp [TableGen] Use ListSeparator (NFC) 2021-02-12 23:44:30 -08:00
SDNodeProperties.cpp
SDNodeProperties.h
SearchableTableEmitter.cpp [TableGen] Use ListSeparator (NFC) 2021-02-08 22:33:51 -08:00
SequenceToOffsetTable.h
SubtargetEmitter.cpp [MCA] Add support for in-order CPUs 2021-03-04 14:08:19 +03:00
SubtargetFeatureInfo.cpp [TableGen] Use ListSeparator (NFC) 2021-02-28 10:59:22 -08:00
SubtargetFeatureInfo.h SubtargetFeatureInfo.h - remove unnecessary include and forward declarations. NFCI. 2020-07-20 13:39:24 +01:00
TableGen.cpp [M68k][TableGen](1/8) TableGen related changes 2021-03-08 12:30:56 -08:00
TableGenBackends.h [M68k][TableGen](1/8) TableGen related changes 2021-03-08 12:30:56 -08:00
Types.cpp
Types.h
WebAssemblyDisassemblerEmitter.cpp [TableGen] Use llvm::append_range (NFC) 2021-01-02 09:24:13 -08:00
WebAssemblyDisassemblerEmitter.h
X86DisassemblerShared.h
X86DisassemblerTables.cpp [llvm] Use static_assert instead of assert (NFC) 2021-01-22 23:25:05 -08:00
X86DisassemblerTables.h
X86EVEX2VEXTablesEmitter.cpp [X86][NFC] Adding one flag to imply whether the instruction should check the predicate when compress EVEX instructions to VEX encoding. 2021-03-09 19:58:01 +08:00
X86FoldTablesEmitter.cpp [llvm] Remove redundant return and continue statements (NFC) 2021-01-14 20:30:34 -08:00
X86ModRMFilters.cpp [X86-64] Support Intel AMX instructions 2020-07-02 08:57:04 +08:00
X86ModRMFilters.h [X86-64] Support Intel AMX instructions 2020-07-02 08:57:04 +08:00
X86RecognizableInstr.cpp [X86] Avoid std::string creation in RecognizableInstr constructor. NFCI. 2020-12-18 16:00:41 +00:00
X86RecognizableInstr.h [X86-64] Support Intel AMX instructions 2020-07-02 08:57:04 +08:00
tdtags