llvm-6502/utils/TableGen
Hal Finkel d715c3e9ac Add support for positionally-encoded operands to FixedLenDecoderEmitter
Unfortunately, the PowerPC instruction definitions make heavy use of the
positional operand encoding heuristic to map operands onto bitfield variables
in the instruction definitions. Changing this to use name-based mapping is not
trivial, however, because additional infrastructure needs to be designed to
handle mapping of complex operands (with multiple suboperands) onto multiple
bitfield variables.

In the mean time, this adds support for positionally encoded operands to
FixedLenDecoderEmitter, so that we can generate a disassembler for the PowerPC
backend. To prevent an accidental reliance on this feature, and to prevent an
undesirable interaction with existing disassemblers, a backend must opt-in to
this support by setting the new decodePositionallyEncodedOperands
instruction-set bit to true.

When enabled, this iterates the variables that contribute to the instruction
encoding, just as the encoder does, and emulates the procedure the encoder uses
to map "numbered" operands to variables. The bit range for each variable is
also determined as the encoder determines them. This map is then consulted
during the decoder-generator's loop over operands to decode, allowing the
decoder to understand both position-based and name-based operand-to-variable
mappings.

As noted in the comment on the decodePositionallyEncodedOperands definition,
this support should be removed once it is no longer needed. There should be no
change to existing disassemblers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197691 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-19 16:12:53 +00:00
..
AsmMatcherEmitter.cpp Add missing #include's to cctype when using isdigit/alpha/etc. 2013-10-12 00:55:57 +00:00
AsmWriterEmitter.cpp Remove dead code. 2013-12-02 05:10:04 +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
CMakeLists.txt Add TableGen ctags(1) emitter and helper script. 2013-03-21 23:40:38 +00:00
CodeEmitterGen.cpp Support little-endian encodings in the FixedLenDecoderEmitter 2013-12-17 22:37:50 +00:00
CodeGenDAGPatterns.cpp TableGen: remove unused variable. 2013-10-28 18:19:04 +00:00
CodeGenDAGPatterns.h TableGen: Refactor DAG patterns to enable parsing one pattern at a time. 2013-10-28 18:07:21 +00:00
CodeGenInstruction.cpp Add an instruction deprecation feature to TableGen. 2013-09-12 10:28:05 +00:00
CodeGenInstruction.h Add an instruction deprecation feature to TableGen. 2013-09-12 10:28:05 +00:00
CodeGenIntrinsics.h Extend 'readonly' and 'readnone' to work on function arguments as well as 2013-07-06 00:29:58 +00:00
CodeGenMapTable.cpp Correct word hyphenations 2013-12-05 05:44:44 +00:00
CodeGenRegisters.cpp Provide basic type safety for array_pod_sort comparators. 2013-09-22 14:09:50 +00:00
CodeGenRegisters.h RegPressure: Order the "pressure sets" by number of regunits per set. 2013-07-25 07:26:29 +00:00
CodeGenSchedule.cpp [weak vtables] Place class definitions into anonymous namespaces to prevent weak vtables. 2013-11-19 03:08:35 +00:00
CodeGenSchedule.h Support BufferSize on ProcResGroup for unified MOp schedulers. 2013-06-15 04:50:06 +00:00
CodeGenTarget.cpp Support little-endian encodings in the FixedLenDecoderEmitter 2013-12-17 22:37:50 +00:00
CodeGenTarget.h Support little-endian encodings in the FixedLenDecoderEmitter 2013-12-17 22:37:50 +00:00
CTagsEmitter.cpp Add TableGen ctags(1) emitter and helper script. 2013-03-21 23:40:38 +00:00
DAGISelEmitter.cpp Fix pattern sort in DAGISelEmitter.cpp 2013-10-01 09:49:01 +00:00
DAGISelMatcher.cpp Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon. 2013-10-05 05:38:16 +00:00
DAGISelMatcher.h Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon. 2013-10-05 05:38:16 +00:00
DAGISelMatcherEmitter.cpp Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon. 2013-10-05 05:38:16 +00:00
DAGISelMatcherGen.cpp Allow types to be omitted in output patterns. 2013-03-24 19:37:00 +00:00
DAGISelMatcherOpt.cpp Add OPC_CheckChildSame0-3 to the DAG isel matcher. This replaces sequences of MoveChild, CheckSame, MoveParent. Saves 846 bytes from the X86 DAG isel matcher, ~300 from ARM, ~840 from Hexagon. 2013-10-05 05:38:16 +00:00
DFAPacketizerEmitter.cpp
DisassemblerEmitter.cpp
FastISelEmitter.cpp Tidy up. Comment grammar. 2013-08-29 22:41:43 +00:00
FixedLenDecoderEmitter.cpp Add support for positionally-encoded operands to FixedLenDecoderEmitter 2013-12-19 16:12:53 +00:00
InstrInfoEmitter.cpp [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
IntrinsicEmitter.cpp Small improvement to InstrinsicEmitter::EmitAttributes. This change removes the “pushing” and “clearing” of the SmallVector and instead uses const arrays to pass the attributeKinds to AttributeSet::get . 2013-11-16 00:20:01 +00:00
LLVMBuild.txt
Makefile
OptParserEmitter.cpp Typo. 2013-10-20 03:19:25 +00:00
PseudoLoweringEmitter.cpp PR14992 - Tablegen incorrectly converts ARM tLDMIA_UPD pseudo to tLDMIA 2013-02-13 19:21:47 +00:00
RegisterInfoEmitter.cpp Replace some unnecessary vector copies with references. 2013-09-15 22:04:42 +00:00
SequenceToOffsetTable.h Add missing include 2013-08-28 07:03:02 +00:00
SetTheory.cpp [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
SetTheory.h
SubtargetEmitter.cpp Mark the x86 machine model as incomplete. PR17367. 2013-09-25 18:14:12 +00:00
TableGen.cpp Add TableGen ctags(1) emitter and helper script. 2013-03-21 23:40:38 +00:00
TableGenBackends.h Add TableGen ctags(1) emitter and helper script. 2013-03-21 23:40:38 +00:00
tdtags Add TableGen ctags(1) emitter and helper script. 2013-03-21 23:40:38 +00:00
TGValueTypes.cpp [weak vtables] Place class definitions into anonymous namespaces to prevent weak vtables. 2013-11-19 03:08:35 +00:00
X86DisassemblerShared.h
X86DisassemblerTables.cpp AVX-512: added VPCONFLICT instruction and intrinsics, 2013-11-03 13:46:31 +00:00
X86DisassemblerTables.h Add XOP disassembler support. Fixes PR13933. 2013-10-03 05:17:48 +00:00
X86ModRMFilters.cpp
X86ModRMFilters.h
X86RecognizableInstr.cpp AVX-512: Added legal type MVT::i1 and VK1 register for it. 2013-12-16 13:52:35 +00:00
X86RecognizableInstr.h AVX-512: added VPCONFLICT instruction and intrinsics, 2013-11-03 13:46:31 +00:00