llvm/utils/TableGen
Hal Finkel 79c15b23c9 [TableGen] Optionally forbid overlap between named and positional operands
There are currently two schemes for mapping instruction operands to
instruction-format variables for generating the instruction encoders and
decoders for the assembler and disassembler respectively: a) to map by name and
b) to map by position.

In the long run, we'd like to remove the position-based scheme and use only
name-based mapping. Unfortunately, the name-based scheme currently cannot deal
with complex operands (those with suboperands), and so we currently must use
the position-based scheme for those. On the other hand, the position-based
scheme cannot deal with (register) variables that are split into multiple
ranges. An upcoming commit to the PowerPC backend (adding VSX support) will
require this capability. While we could teach the position-based scheme to
handle that, since we'd like to move away from the position-based mapping
generally, it seems silly to teach it new tricks now. What makes more sense is
to allow for partial transitioning: use the name-based mapping when possible,
and only use the position-based scheme when necessary.

Now the problem is that mixing the two sensibly was not possible: the
position-based mapping would map based on position, but would not skip those
variables that were mapped by name. Instead, the two sets of assignments would
overlap. However, I cannot currently change the current behavior, because there
are some backends that rely on it [I think mistakenly, but I'll send a message
to llvmdev about that]. So I've added a new TableGen bit variable:
noNamedPositionallyEncodedOperands, that can be used to cause the
position-based mapping to skip variables mapped by name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203767 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-13 07:57:54 +00:00
..
AsmMatcherEmitter.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-09 18:03:14 +00:00
AsmWriterEmitter.cpp Replace PROLOG_LABEL with a new CFI_INSTRUCTION. 2014-03-07 06:08:31 +00:00
AsmWriterInst.cpp Remove dead code. 2013-12-02 05:10:04 +00:00
AsmWriterInst.h Remove dead code. 2013-12-02 05:10:04 +00:00
CallingConvEmitter.cpp LLVM-1163: AAPCS-VFP violation when CPRC allocated to stack 2014-02-07 11:19:53 +00:00
CMakeLists.txt Remove TGValueTypes.cpp from CMakeLists.txt which I forgot to do in r200036. 2014-01-24 20:51:32 +00:00
CodeEmitterGen.cpp [TableGen] Optionally forbid overlap between named and positional operands 2014-03-13 07:57:54 +00:00
CodeGenDAGPatterns.cpp Add an OutPatFrag TableGen class 2014-02-28 00:26:56 +00:00
CodeGenDAGPatterns.h Add an OutPatFrag TableGen class 2014-02-28 00:26:56 +00:00
CodeGenInstruction.cpp Shrink the size of CodeGenInstruction a little bit by using bitfields. 32 bools seemed excessive. 2014-02-05 09:10:40 +00:00
CodeGenInstruction.h Shrink the size of CodeGenInstruction a little bit by using bitfields. 32 bools seemed excessive. 2014-02-05 09:10:40 +00:00
CodeGenIntrinsics.h
CodeGenMapTable.cpp Unbreak the C++11 build. 2014-03-03 13:59:41 +00:00
CodeGenRegisters.cpp [C++11] Add 'override' keywords to tablegen code. 2014-03-05 05:17:42 +00:00
CodeGenRegisters.h Remove copy ctors that did the same thing as the default one. 2014-03-11 11:32:49 +00:00
CodeGenSchedule.cpp Fix a false error reported by the tblgen backend for machine model 2014-03-13 03:49:20 +00:00
CodeGenSchedule.h Fix known typos 2014-01-24 17:20:08 +00:00
CodeGenTarget.cpp Replace PROLOG_LABEL with a new CFI_INSTRUCTION. 2014-03-07 06:08:31 +00:00
CodeGenTarget.h Support little-endian encodings in the FixedLenDecoderEmitter 2013-12-17 22:37:50 +00:00
CTagsEmitter.cpp Remove unnecessary include. 2014-02-09 07:55:19 +00:00
DAGISelEmitter.cpp Use ArrayRef to simplify some code. 2014-01-21 07:20:05 +00:00
DAGISelMatcher.cpp Add CheckChildInteger to ISelMatcher operations. Removes nearly 2000 bytes from X86 matcher table. 2014-02-05 05:44:28 +00:00
DAGISelMatcher.h Replace OwningPtr<T> with std::unique_ptr<T>. 2014-03-06 05:51:42 +00:00
DAGISelMatcherEmitter.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-09 07:44:38 +00:00
DAGISelMatcherGen.cpp Fix typo in commment tyep->type. 2014-01-25 17:34:23 +00:00
DAGISelMatcherOpt.cpp Replace OwningPtr<T> with std::unique_ptr<T>. 2014-03-06 05:51:42 +00:00
DFAPacketizerEmitter.cpp
DisassemblerEmitter.cpp Don't use PrintFatalError(which calls exit) for 'Primary decode conflict'. Just skip emitting the table. This way the main function will delete the output file instead of it remaining empty and confusing dependency checks if build is invoked a second time. 2014-01-05 01:34:12 +00:00
FastISelEmitter.cpp Rename a DebugLoc variable to DbgLoc and a DataLayout to DL. 2014-02-18 22:05:46 +00:00
FixedLenDecoderEmitter.cpp [TableGen] Optionally forbid overlap between named and positional operands 2014-03-13 07:57:54 +00:00
InstrInfoEmitter.cpp Fix a vector that was passed by value instead of reference. 2014-02-05 07:27:49 +00:00
IntrinsicEmitter.cpp Now that we have C++11, turn simple functors into lambdas and remove a ton of boilerplate. 2014-03-01 11:47:00 +00:00
LLVMBuild.txt
Makefile
OptParserEmitter.cpp [cleanup] Re-sort all the includes with utils/sort_includes.py. 2014-03-04 10:07:28 +00:00
PseudoLoweringEmitter.cpp Change MCStreamer EmitInstruction interface to take subtarget info 2014-01-28 23:12:42 +00:00
RegisterInfoEmitter.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-09 07:44:38 +00:00
SequenceToOffsetTable.h Add missing include 2013-08-28 07:03:02 +00:00
SetTheory.cpp [C++11] Add 'override' keywords to tablegen code. 2014-03-05 05:17:42 +00:00
SetTheory.h
SubtargetEmitter.cpp [C++11] Add 'override' keyword to virtual methods that override their base class. 2014-03-09 07:44:38 +00:00
TableGen.cpp replace LeakSanitizerIsTurnedOffForTheCurrentProcess with __lsan_is_turned_off, but this time hide it under __has_feature(address_sanitizer); also include <sanitizer/lsan_interface.h> 2014-01-15 07:59:37 +00:00
TableGenBackends.h
tdtags
X86DisassemblerShared.h Remove filtering concept from X86 disassembler table generation. It's no longer necessary. 2014-02-13 07:07:16 +00:00
X86DisassemblerTables.cpp AVX-512: Added rrk, rrkz, rmk, rmkz, rmbk, rmbkz versions of AVX512 FP packed instructions, added encoding tests for them. 2014-03-06 08:45:30 +00:00
X86DisassemblerTables.h Remove A6/A7 opcode maps. They can all be handled with a TB map, opcode of 0xa6/0xa7, and adding MRM_C0/MRM_E0 forms. Removes 376K from the disassembler tables. 2014-02-19 05:34:21 +00:00
X86ModRMFilters.cpp Second attempt at Removing special form of AddRegFrm used by FP instructions. These instructions can be handled by MRMXr instead. 2014-01-01 14:22:37 +00:00
X86ModRMFilters.h [C++11] Add 'override' keywords to tablegen code. 2014-03-05 05:17:42 +00:00
X86RecognizableInstr.cpp [x86] Simplify disassembler code slightly. 2014-02-26 06:01:21 +00:00
X86RecognizableInstr.h [x86] Switch PAUSE instruction to use XS prefix instead of HasREPPrefix. Remove HasREPPrefix support from disassembler table generator since its now only used by CodeGenOnly instructions. 2014-02-20 07:59:43 +00:00