1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00
llvm-mirror/utils/TableGen
Simon Cook bae1c75f0d [TableGen] Support combining AssemblerPredicates with ORs
For context, the proposed RISC-V bit manipulation extension has a subset
of instructions which require one of two SubtargetFeatures to be
enabled, 'zbb' or 'zbp', and there is no defined feature which both of
these can imply to use as a constraint either (see comments in D65649).

AssemblerPredicates allow multiple SubtargetFeatures to be declared in
the "AssemblerCondString" field, separated by commas, and this means
that the two features must both be enabled. There is no equivalent to
say that _either_ feature X or feature Y must be enabled, short of
creating a dummy SubtargetFeature for this purpose and having features X
and Y imply the new feature.

To solve the case where X or Y is needed without adding a new feature,
and to better match a typical TableGen style, this replaces the existing
"AssemblerCondString" with a dag "AssemblerCondDag" which represents the
same information. Two operators are defined for use with
AssemblerCondDag, "all_of", which matches the current behaviour, and
"any_of", which adds the new proposed ORing features functionality.

This was originally proposed in the RFC at
http://lists.llvm.org/pipermail/llvm-dev/2020-February/139138.html

Changes to all current backends are mechanical to support the replaced
functionality, and are NFCI.

At this stage, it is illegal to combine features with ands and ors in a
single AssemblerCondDag. I suspect this case is sufficiently rare that
adding more complex changes to support it are unnecessary.

Differential Revision: https://reviews.llvm.org/D74338
2020-03-13 17:13:51 +00:00
..
GlobalISel Avoid including FileSystem.h from MemoryBuffer.h 2020-02-29 12:30:23 -08:00
AsmMatcherEmitter.cpp Address implicit conversions detected by g++ 5 only. 2020-01-29 01:01:09 +01:00
AsmWriterEmitter.cpp [TableGen] Support combining AssemblerPredicates with ORs 2020-03-13 17:13:51 +00:00
AsmWriterInst.cpp [tablegen] Add locations to many PrintFatalError() calls 2019-02-12 17:36:57 +00:00
AsmWriterInst.h AsmWriterOperand - fix uninitialized variable warning. NFCI. 2019-11-07 16:56:15 +00:00
Attributes.cpp [NFC] Refactor TableGen for attributes 2020-02-02 15:12:20 +01:00
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 Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CodeGenDAGPatterns.cpp TableGen: Fix typo 2020-03-13 10:45:28 -04:00
CodeGenDAGPatterns.h Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CodeGenHwModes.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CodeGenHwModes.h Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
CodeGenInstruction.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CodeGenInstruction.h Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
CodeGenIntrinsics.h TableGen/GlobalISel: Fix pattern matching of immarg literals 2020-01-09 17:37:52 -05:00
CodeGenMapTable.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CodeGenRegisters.cpp [TBLGEN] Emit register pressure set enum 2020-02-18 10:09:05 -08:00
CodeGenRegisters.h [TBLGEN] Inhibit generation of unneeded psets 2020-02-17 15:38:08 -08:00
CodeGenSchedule.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CodeGenSchedule.h Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CodeGenTarget.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CodeGenTarget.h [NFC] Fix trivial typos in comments 2020-01-06 10:50:26 +00:00
CTagsEmitter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DAGISelEmitter.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
DAGISelMatcher.cpp [TableGen] Replace a dyn_cast with isa to avoid an unused variable warning introduced in r355785. NFC 2019-03-11 16:51:37 +00:00
DAGISelMatcher.h TableGen: Support physical register inputs > 255 2019-07-22 15:02:34 +00:00
DAGISelMatcherEmitter.cpp [TBLGEN] Fix subreg value overflow in DAGISelMatcher 2020-02-12 13:29:57 -08:00
DAGISelMatcherGen.cpp [TBLGEN] Fix subreg value overflow in DAGISelMatcher 2020-02-12 13:29:57 -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 Fix DfaEmitter::visitDfaState() crash in MSVC x86 debug builds (PR44945) 2020-02-25 15:18:41 +01:00
DFAEmitter.h Fix DfaEmitter::visitDfaState() crash in MSVC x86 debug builds (PR44945) 2020-02-25 15:18:41 +01:00
DFAPacketizerEmitter.cpp Move DFA tables into the read-only data segmant. 2020-02-18 14:36:56 +01:00
DisassemblerEmitter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
ExegesisEmitter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
FastISelEmitter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
FixedLenDecoderEmitter.cpp [TableGen] Support combining AssemblerPredicates with ORs 2020-03-13 17:13:51 +00:00
GICombinerEmitter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
GlobalISelEmitter.cpp Revert "Remove redundant "std::move"s in return statements" 2020-02-10 07:07:40 -08: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 Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
InstrInfoEmitter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
IntrinsicEmitter.cpp Add <128 x i1> as an intrinsic type 2020-02-19 09:38:13 -06:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
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 Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
OptRSTEmitter.cpp Avoid including FileSystem.h from MemoryBuffer.h 2020-02-29 12:30:23 -08:00
PredicateExpander.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PredicateExpander.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
PseudoLoweringEmitter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RegisterBankEmitter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RegisterInfoEmitter.cpp [TBLGEN] Emit register pressure set enum 2020-02-18 10:09:05 -08:00
RISCVCompressInstEmitter.cpp [TableGen] Support combining AssemblerPredicates with ORs 2020-03-13 17:13:51 +00:00
SDNodeProperties.cpp [tablegen] Add locations to many PrintFatalError() calls 2019-02-12 17:36:57 +00:00
SDNodeProperties.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SearchableTableEmitter.cpp [TableGen] Diagnose undefined fields when generating searchable tables 2020-02-19 14:03:48 +00:00
SequenceToOffsetTable.h [tablegen] Emit string literals instead of char arrays 2020-01-27 18:22:25 +00:00
SubtargetEmitter.cpp [MC] Widen the functional unit type from 32 to 64 bits. 2020-02-24 09:37:00 +01:00
SubtargetFeatureInfo.cpp [TableGen] Support combining AssemblerPredicates with ORs 2020-03-13 17:13:51 +00:00
SubtargetFeatureInfo.h Use bitset for assembler predicates 2019-03-11 17:04:35 +00:00
TableGen.cpp [tablegen] Emit string literals instead of char arrays 2020-01-27 18:22:25 +00:00
TableGenBackends.h [TableGen] Remove unused target intrinsic generation logic 2019-12-11 07:38:45 -08:00
tdtags Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Types.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Types.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
WebAssemblyDisassemblerEmitter.cpp [TableGen] Correct comments for end of namespace. NFC 2019-08-25 10:47:30 +00:00
WebAssemblyDisassemblerEmitter.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
X86DisassemblerShared.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
X86DisassemblerTables.cpp [X86][Disassembler] Shrink X86GenDisassemblerTables.inc from 36M to 6.1M 2020-01-11 17:28:22 -08:00
X86DisassemblerTables.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
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 Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
X86ModRMFilters.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
X86RecognizableInstr.cpp [X86] Add a new format type for instructions that represent named prefix bytes like data16 and rep. Use it to make a simpler version of isPrefix. 2020-02-21 12:34:59 -08:00
X86RecognizableInstr.h [X86] Add a new format type for instructions that represent named prefix bytes like data16 and rep. Use it to make a simpler version of isPrefix. 2020-02-21 12:34:59 -08:00