llvm-project/llvm/utils/TableGen
Daniel Sanders 57938df813 [globalisel][tablegen] Fix an multi-insn match bug where ComplexPattern is used on multiple insns.
In each rule, each use of ComplexPattern is assigned an element in the Renderers
array. The matcher then collects renderer functions in this array and they are
used to render instructions. This works well for a single instruction but a
bug in the allocation mechanism causes the elements to be assigned on a
per-instruction basis rather than a per-rule basis.

So in the case of:
  (set GPR32:$dst, (Op complex:$src1, complex:$src2))
tablegen currently assigns elements 0 and 1 to $src1 and $src2 respectively,
but for:
  (set GPR32:$dst, (Op complex:$src1, (Op complex:$src2)))
it currently assigned both $src1 and $src2 the same element (0). This results in
one complex operand being rendered twice and the other being forgotten.
This patch corrects the allocation such that $src1 and $src2 are still allocated
different elements in this case.

llvm-svn: 307646
2017-07-11 10:40:18 +00:00
..
AsmMatcherEmitter.cpp [TableGen] Fix some mismatches in the use of Namespace fields versus Target name in some of our emitters. 2017-07-07 05:19:25 +00:00
AsmWriterEmitter.cpp [TableGen] Use StringRef instead of std::string for CodeGenInstruction namespace. NFC 2017-07-07 06:22:35 +00:00
AsmWriterInst.cpp
AsmWriterInst.h
Attributes.cpp [TableGen] Adapt more places to getValueAsString now returning a StringRef instead of a std::string. 2017-05-31 21:12:46 +00:00
CMakeLists.txt [x86] Revert the X86FoldTablesEmitter due to more miscompiles. 2017-06-06 02:15:31 +00:00
CTagsEmitter.cpp Use StringRef for MemoryBuffer identifier API (NFC) 2016-10-01 16:38:28 +00:00
CallingConvEmitter.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
CodeEmitterGen.cpp [tablegen] Avoid creating a temporary vector in getInstructionCase 2017-07-04 06:16:53 +00:00
CodeGenDAGPatterns.cpp [TableGen] Fix bug in TableGen CodeGenPatterns when adding variants of the patterns. 2017-06-27 07:10:20 +00:00
CodeGenDAGPatterns.h [TableGen] Remove some copies around PatternToMatch. 2017-06-25 17:33:49 +00:00
CodeGenInstruction.cpp [TableGen] Add EncoderMethod to RegisterOperand 2017-05-15 10:13:07 +00:00
CodeGenInstruction.h [TableGen] Use StringRef instead of std::string for CodeGenInstruction namespace. NFC 2017-07-07 06:22:35 +00:00
CodeGenIntrinsics.h TableGen: Add IntrHasSideEffects property for intrinsics 2017-04-28 21:01:46 +00:00
CodeGenMapTable.cpp [TableGen] Use StringRef instead of std::string for CodeGenInstruction namespace. NFC 2017-07-07 06:22:35 +00:00
CodeGenRegisters.cpp Change sort function used in tblgen to be strict weak ordering 2017-06-27 16:28:44 +00:00
CodeGenRegisters.h [globalisel][tablegen] Add support for EXTRACT_SUBREG. 2017-06-27 10:11:39 +00:00
CodeGenSchedule.cpp [TableGen] Improve Debug Output for --debug-only=subtarget-emitter NFCI 2017-06-28 00:06:40 +00:00
CodeGenSchedule.h Revert "Revert "[misched] Extend scheduler to handle unsupported features"" 2016-06-24 08:43:27 +00:00
CodeGenTarget.cpp [TableGen] Use StringRef instead of std::string for CodeGenInstruction namespace. NFC 2017-07-07 06:22:35 +00:00
CodeGenTarget.h [TableGen] Use StringRef instead of std::string for CodeGenInstruction namespace. NFC 2017-07-07 06:22:35 +00:00
DAGISelEmitter.cpp TableGen: Use StringRef instead of const std::string& in return vals. 2016-12-04 05:48:16 +00:00
DAGISelMatcher.cpp [TableGen] Remove getHash support from DAGISelMatcher. It hasn't been used for some time. 2016-05-06 02:37:59 +00:00
DAGISelMatcher.h Remove `inline` keyword from inline `classof` methods 2017-06-29 19:35:17 +00:00
DAGISelMatcherEmitter.cpp [tablegen] Use categories on options that only matter to one emitter. 2017-03-27 13:15:13 +00:00
DAGISelMatcherGen.cpp [TableGen] Use StringRef instead of std::string for CodeGenInstruction namespace. NFC 2017-07-07 06:22:35 +00:00
DAGISelMatcherOpt.cpp [TableGen] Use less stack in DAGISelMatcherOpt 2017-02-06 19:41:44 +00:00
DFAPacketizerEmitter.cpp Fix some Clang-tidy and Include What You Use warnings; other minor fixes (NFC). 2016-11-30 17:48:10 +00:00
DisassemblerEmitter.cpp TableGen: Use StringRef instead of const std::string& in return vals. 2016-12-04 05:48:16 +00:00
FastISelEmitter.cpp [TableGen] Cleanup capturing of instruction namespace for the fast isel emitter to remove a std::string and duplicated code. NFC 2017-07-07 06:22:36 +00:00
FixedLenDecoderEmitter.cpp [tablegen] Avoid creating temporary strings 2017-07-05 20:14:54 +00:00
GlobalISelEmitter.cpp [globalisel][tablegen] Fix an multi-insn match bug where ComplexPattern is used on multiple insns. 2017-07-11 10:40:18 +00:00
InstrInfoEmitter.cpp [TableGen] Use StringRef instead of std::string for CodeGenInstruction namespace. NFC 2017-07-07 06:22:35 +00:00
IntrinsicEmitter.cpp [IR] Abstract away ArgNo+1 attribute indexing as much as possible 2017-05-03 18:17:31 +00:00
LLVMBuild.txt
OptParserEmitter.cpp [GSoC] Flag value completion for clang 2017-06-20 16:31:31 +00:00
PseudoLoweringEmitter.cpp TableGen: Use StringInit instead of std::string for DagInit arg names 2016-12-05 06:00:46 +00:00
RegisterBankEmitter.cpp [TableGen] Fix some mismatches in the use of Namespace fields versus Target name in some of our emitters. 2017-07-07 05:19:25 +00:00
RegisterInfoEmitter.cpp Break up long lines, NFC 2017-06-28 18:59:18 +00:00
SearchableTableEmitter.cpp [tablegen] Avoid creating temporary strings 2017-07-05 20:14:54 +00:00
SequenceToOffsetTable.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
SubtargetEmitter.cpp [tablegen] Avoid creating temporary strings 2017-07-05 20:14:54 +00:00
SubtargetFeatureInfo.cpp [globalisel][tablegen] Compute available feature bits correctly. 2017-04-29 17:30:09 +00:00
SubtargetFeatureInfo.h [globalisel][tablegen] Compute available feature bits correctly. 2017-04-29 17:30:09 +00:00
TableGen.cpp [x86] Revert the X86FoldTablesEmitter due to more miscompiles. 2017-06-06 02:15:31 +00:00
TableGenBackends.h [x86] Revert the X86FoldTablesEmitter due to more miscompiles. 2017-06-06 02:15:31 +00:00
Types.cpp [globalisel][tablegen] Import SelectionDAG's rule predicates and support the equivalent in GIRule. 2017-04-21 15:59:56 +00:00
Types.h Check that emitted instructions meet their predicates on all targets except ARM, Mips, and X86. 2016-11-19 13:05:44 +00:00
X86DisassemblerShared.h
X86DisassemblerTables.cpp fix trivial typos in comments; NFC 2017-07-04 13:09:29 +00:00
X86DisassemblerTables.h fix trivial typos in comments; NFC 2017-07-04 13:09:29 +00:00
X86EVEX2VEXTablesEmitter.cpp Another instance where GCC doesn't understand implicit construction of StringLiteral. 2017-03-24 14:17:56 +00:00
X86ModRMFilters.cpp
X86ModRMFilters.h fix trivial typos in comments; NFC 2017-07-04 13:09:29 +00:00
X86RecognizableInstr.cpp [tablegen] Avoid creating temporary strings 2017-07-05 20:14:54 +00:00
X86RecognizableInstr.h fix trivial typos in comments; NFC 2017-07-04 13:09:29 +00:00
tdtags