llvm-project/llvm/utils/TableGen
Quentin Colombet 21136c0273 [TableGen][AsmWriterEmitter] Use a deterministic order to sort InstrAliases
Inside an alias group, when ordering instruction aliases, we rely
on the priority field to sort them.
When the priority is not set or more generally when there is a tie between
two aliases, we used to rely on the lexicographic order. However, this
order can change for the anonymous records when more instruction, intrinsic,
etc. are inserted.

For instance, given two anonymous records r1 and r2 with respective name
A_999 and A_1000, their lexicography order will be r2 then r1. Now, if
an instruction is added before them, their name will become respectively
A_1000 and A_1001, thus the lexicography order will be r1 then r2, i.e.,
it changed.

If that happens in an alias group, the assembly output would prefer a
different alias for no apparent good reasons.

A way to fix that is to use proper priority for all aliases, but we
can also make the tie breaker comparison smarter and use a deterministic
ordering. This is what this patch does.

llvm-svn: 294695
2017-02-10 02:43:09 +00:00
..
AsmMatcherEmitter.cpp Move mnemonicIsValid to Mips target. 2017-02-08 02:54:12 +00:00
AsmWriterEmitter.cpp [TableGen][AsmWriterEmitter] Use a deterministic order to sort InstrAliases 2017-02-10 02:43:09 +00:00
AsmWriterInst.cpp [TableGen] Remove the CGIOpNo from AsmWriterOperand as its not used for anything. NFC 2016-01-22 05:59:37 +00:00
AsmWriterInst.h [TableGen] Reorder fields in AsmWriterOperand to remove padding and reduce size. NFC 2016-01-22 05:59:40 +00:00
Attributes.cpp Use StringRef in TableGen emitted API for attribute (NFC) 2016-10-04 23:31:39 +00:00
CMakeLists.txt Re-commit: [globalisel] Tablegen-erate current Register Bank Information 2017-01-19 11:15:55 +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: Use StringRef instead of const std::string& in return vals. 2016-12-04 05:48:16 +00:00
CodeGenDAGPatterns.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
CodeGenDAGPatterns.h [GlobalISel] Add basic Selector-emitter tblgen backend. 2016-12-21 23:26:20 +00:00
CodeGenInstruction.cpp TableGen: Use StringInit instead of std::string for DagInit arg names 2016-12-05 06:00:46 +00:00
CodeGenInstruction.h This reapplies r281304. The issue was that I had missed 2016-09-14 08:20:03 +00:00
CodeGenIntrinsics.h Add IntrInaccessibleMemOnly property for intrinsics 2016-11-22 19:16:04 +00:00
CodeGenMapTable.cpp [tablegen] Delete duplicates from a vector without skipping elements 2016-12-01 19:38:50 +00:00
CodeGenRegisters.cpp Implement LaneBitmask::any(), use it to replace !none(), NFCI 2016-12-16 19:11:56 +00:00
CodeGenRegisters.h Extract LaneBitmask into a separate type 2016-12-15 14:36:06 +00:00
CodeGenSchedule.cpp Fix some Clang-tidy and Include What You Use warnings; other minor fixes (NFC). 2016-11-30 17:48:10 +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 const std::string& in return vals. 2016-12-04 05:48:16 +00:00
CodeGenTarget.h TableGen: Use StringRef instead of const std::string& in return vals. 2016-12-04 05:48:16 +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 [TableGen] Remove isSafeToReorderWithPatternPredicate from DAGISelMatchers as its not used anymore. 2016-05-06 06:21:27 +00:00
DAGISelMatcherEmitter.cpp SDAG: Make SelectCodeCommon return void 2016-05-10 22:58:26 +00:00
DAGISelMatcherGen.cpp TableGen: Use StringRef instead of const std::string& in return vals. 2016-12-04 05:48:16 +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 Turn a TableGen FastISelEmitter warning into an error. 2017-01-30 19:03:26 +00:00
FixedLenDecoderEmitter.cpp TableGen: Use StringInit instead of std::string for DagInit arg names 2016-12-05 06:00:46 +00:00
GlobalISelEmitter.cpp [GlobalISel] Simplify StringRef parameters. NFC. 2017-02-09 02:50:01 +00:00
InstrInfoEmitter.cpp [AMDGPU, PowerPC, TableGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-12 22:23:53 +00:00
IntrinsicEmitter.cpp TableGen: use fully qualified name for StringLiteral 2017-01-31 00:45:01 +00:00
LLVMBuild.txt
OptParserEmitter.cpp
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 infinite recursion in RegisterBankEmitter 2017-01-30 15:07:01 +00:00
RegisterInfoEmitter.cpp Implement LaneBitmask::any(), use it to replace !none(), NFCI 2016-12-16 19:11:56 +00:00
SearchableTableEmitter.cpp [tblgen] Compare const char * with strcmp instead of creating StringRef. 2016-07-26 09:27:51 +00:00
SequenceToOffsetTable.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
SubtargetEmitter.cpp [AMDGPU, PowerPC, TableGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2016-12-09 22:06:55 +00:00
SubtargetFeatureInfo.cpp Use print() instead of dump() in code 2017-01-28 02:47:46 +00:00
SubtargetFeatureInfo.h TableGen: Use StringRef instead of const std::string& in return vals. 2016-12-04 05:48:16 +00:00
TableGen.cpp [globalisel] Fix missing break. 2017-02-03 14:18:35 +00:00
TableGenBackends.h Re-commit: [globalisel] Tablegen-erate current Register Bank Information 2017-01-19 11:15:55 +00:00
Types.cpp Check that emitted instructions meet their predicates on all targets except ARM, Mips, and X86. 2016-11-19 13:05:44 +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 [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix 2017-01-18 08:07:51 +00:00
X86DisassemblerTables.h
X86ModRMFilters.cpp
X86ModRMFilters.h
X86RecognizableInstr.cpp [X86] Merge the disassemblers handling of the different TYPE_RELs by getting the size information from the ENCODING field. NFCI 2017-01-16 06:49:09 +00:00
X86RecognizableInstr.h [X86] Create a new instruction format to handle 4VOp3 encoding. This saves one bit in TSFlags and simplifies MRMSrcMem/MRMSrcReg format handling. 2016-08-22 07:38:50 +00:00
tdtags