1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 10:42:39 +01:00
llvm-mirror/utils/TableGen
Jay Foad 558e354c8d [TableGen] Allow identical MnemonicAliases with no predicate
My use case for this is illustrated in the test case: I want to define
the same instruction twice with different (disjoint) predicates, because
the instruction has different operands on different subtargets. It's
convenient to do this with a multiclass that also defines an alias for
the instruction.

Previously tablegen would complain if this alias was defined twice with
no predicate. One way to fix this would be to add a predicate on each
definition of the alias, matching the predicate on the instruction. But
this (a) is slightly awkward to do in the real world use case I had, and
(b) leads to an inefficient matcher that will do something like this:

  if (Mnemonic == "foo_alias") {
    if (Features.test(Feature_Subtarget1Bit))
      Mnemonic == "foo";
    else if (Features.test(Feature_Subtarget2Bit))
      Mnemonic == "foo";
    return;
  }

It would be more efficient to skip the feature tests and return "foo"
unconditionally.

Overall it seems better to allow multiple definitions of the identical
alias with no predicate.

Differential Revision: https://reviews.llvm.org/D105033
2021-06-30 10:53:39 +01:00
..
GlobalISel Revert "Make TableGenGlobalISel an object library" 2021-03-31 13:27:00 -07:00
AsmMatcherEmitter.cpp [TableGen] Allow identical MnemonicAliases with no predicate 2021-06-30 10:53:39 +01:00
AsmWriterEmitter.cpp [TableGen] Use range-based for loops (NFC) 2021-05-07 13:34:03 +08:00
AsmWriterInst.cpp [llvm] Use isAlpha/isAlnum (NFC) 2021-01-22 23:25:03 -08:00
AsmWriterInst.h [TableGen] Fix printing second PC-relative operand 2021-06-23 13:27:37 +07:00
Attributes.cpp
CallingConvEmitter.cpp [TableGen] Use ListSeparator (NFC) 2021-02-25 19:54:36 -08:00
CMakeLists.txt Revert "Make TableGenGlobalISel an object library" 2021-03-31 13:27:00 -07: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 Convert TableGen assert to error 2021-06-01 13:17:58 -07:00
CodeGenDAGPatterns.h [TableGen] Store predicates in PatternToMatch as ListInit *. Add string for HwModeFeatures 2021-04-28 12:05:49 -07:00
CodeGenHwModes.cpp
CodeGenHwModes.h
CodeGenInstruction.cpp [TableGen] Use StringRef instead of std::string to split up a string that's being parsed. NFCI 2021-04-03 11:48:13 -07:00
CodeGenInstruction.h [TableGen] Use StringRef instead of std::string to split up a string that's being parsed. NFCI 2021-04-03 11:48:13 -07:00
CodeGenIntrinsics.h [TableGen] Add IntrNoMerge as intrinsic property 2021-03-02 09:04:50 -08:00
CodeGenMapTable.cpp [TableGen] CodeGenMapTable - use for-range loop. NFCI. 2021-04-16 18:55:23 +01:00
CodeGenRegisters.cpp [TableGen] Use range-based for loops (NFC) 2021-05-07 13:34:03 +08:00
CodeGenRegisters.h [TableGen] Use range-based for loops (NFC) 2021-02-01 20:55:09 -08:00
CodeGenSchedule.cpp [TableGen] Use range-based for loops (NFC) 2021-05-07 13:34:03 +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 [ValueTypes] Define MVTs for v3i64/v3f64 to complement v6i32/v6f32 2021-06-24 12:41:22 +09:00
CodeGenTarget.h [TableGen] Drop redundant const from return types (NFC) 2021-01-17 10:39:49 -08:00
CTagsEmitter.cpp
DAGISelEmitter.cpp [TableGen] Use range-based for loop. NFC 2021-04-18 12:41:09 -07: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] Use sign rotated VBR for OPC_EmitInteger. 2021-05-02 12:40:44 -07:00
DAGISelMatcherGen.cpp [TableGen] Make all the fields in PatternToMatch private. NFCI 2021-02-06 22:34:01 -08:00
DAGISelMatcherOpt.cpp
DFAEmitter.cpp [NFCI] Move DEBUG_TYPE definition below #includes 2021-05-30 17:31:01 +08:00
DFAEmitter.h
DFAPacketizerEmitter.cpp [NFCI] Move DEBUG_TYPE definition below #includes 2021-05-30 17:31:01 +08:00
DirectiveEmitter.cpp [openacc][openmp] Reduce number of generated file and prefer inclusion of .inc 2021-03-23 09:16:53 -04:00
DisassemblerEmitter.cpp
ExegesisEmitter.cpp [TableGen] Remove redundant Error: in msg (NFC) 2021-05-10 21:18:37 +08:00
FastISelEmitter.cpp [TableGen] Use range-based for loops (NFC) 2021-05-07 13:34:03 +08:00
FixedLenDecoderEmitter.cpp [TableGen] Use range-based for loops (NFC) 2021-05-07 13:34:03 +08:00
GICombinerEmitter.cpp [TableGen] Use range-based for loops (NFC) 2021-05-07 13:34:03 +08:00
GlobalISelEmitter.cpp Reland [GlobalISel] NFC: Have LLT::getSizeInBits/Bytes return a TypeSize. 2021-06-28 15:24:27 +01:00
InfoByHwMode.cpp [TableGen] Use ListSeparator (NFC) 2021-02-09 22:14:27 -08:00
InfoByHwMode.h [TableGen] Pass SmallVector to union_modes instead of returning a std::vector. 2021-04-18 15:59:52 -07:00
InstrDocsEmitter.cpp [TableGen] Use ListSeparator (NFC) 2021-02-01 20:55:07 -08:00
InstrInfoEmitter.cpp [TableGen] Use range-based for loops (NFC) 2021-05-07 13:34:03 +08:00
IntrinsicEmitter.cpp [ValueTypes] Rename MVT::getVectorNumElements() to MVT::getVectorMinNumElements(). Fix some misuses of getVectorNumElements() 2021-05-12 07:46:45 -07: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] Tiny enhancement 2021-03-23 12:49:05 +07: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 range-based for loops (NFC) 2021-05-07 13:34:03 +08:00
RISCVCompressInstEmitter.cpp [TableGen] Use range-based for loops (NFC) 2021-05-07 13:34:03 +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
TableGen.cpp [openacc][openmp] Reduce number of generated file and prefer inclusion of .inc 2021-03-23 09:16:53 -04:00
TableGenBackends.h [openacc][openmp] Reduce number of generated file and prefer inclusion of .inc 2021-03-23 09:16:53 -04:00
tdtags
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 Fix some -Wunused-but-set-variable in -DLLVM_ENABLE_ASSERTIONS=off build 2021-06-04 23:34:43 -07: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
X86ModRMFilters.h
X86RecognizableInstr.cpp [X86] Avoid std::string creation in RecognizableInstr constructor. NFCI. 2020-12-18 16:00:41 +00:00
X86RecognizableInstr.h