llvm-project/llvm/utils
Hal Finkel 71b2e20df9 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.

llvm-svn: 197691
2013-12-19 16:12:53 +00:00
..
FileCheck Expose FileCheck's AddFixedStringToRegEx as Regex::escape 2013-12-12 00:06:41 +00:00
FileUpdate Revert "Revert "Windows: Add support for unicode command lines"" 2013-10-07 01:00:07 +00:00
KillTheDoctor Fix grammar-o. 2012-12-11 00:23:07 +00:00
Misc Patch that forces MergeFunctions pass for clang. 2013-09-24 20:06:31 +00:00
PerfectShuffle Sort the #include lines for utils/... 2012-12-04 10:37:14 +00:00
TableGen Add support for positionally-encoded operands to FixedLenDecoderEmitter 2013-12-19 16:12:53 +00:00
Target/ARM
bugpoint
buildit Configure with --enable-terminfo=no for Apple's llvmCore builds. 2013-11-03 05:49:36 +00:00
count
crosstool
emacs Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
fpcmp Don't use PathV1.h in FileUtilities.h. 2013-06-13 20:41:00 +00:00
git [utils] Update find-rev utility to take a branch argument (name of the git-svn 2013-01-17 18:57:21 +00:00
git-svn Use 'git svn find-rev' in git-svnrevert instead of shell script fu. 2013-04-26 03:27:39 +00:00
jedit
kate Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
lint
lit Tweak lit/TestingConfig.py Py3-compatible. has_key is dead. 2013-12-17 04:14:50 +00:00
llvm-build [llvm-build] Make Py3 compatible. 2013-08-14 23:15:39 +00:00
llvm-lit Add missing trailing comma in llvm-lit.in 2013-12-17 00:55:31 +00:00
not Revert "Revert "Windows: Add support for unicode command lines"" 2013-10-07 01:00:07 +00:00
release Remove superfluous label. 2013-12-03 07:34:19 +00:00
testgen [MC] bundle alignment: prevent padding instructions from crossing bundle boundaries 2013-01-31 17:00:03 +00:00
textmate Add highlighting for "int" keyword 2013-01-08 16:23:02 +00:00
unittest [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
valgrind llvm/utils/valgrind/x86_64-pc-linux-gnu.supp: Add /usr/bin/cmp. 2013-01-20 15:30:29 +00:00
vim Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
yaml-bench YAMLBench.cpp: Use llvm_move instead of std::move also here. 2013-10-18 23:25:39 +00:00
DSAclean.py
DSAextract.py Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 2012-09-27 10:14:43 +00:00
GenLibDeps.pl Rename VMCore directory to IR. 2013-01-02 09:10:48 +00:00
GetRepositoryPath Fix the build for git repositories with multiple remotes. 2013-09-16 09:25:49 +00:00
GetSourceVersion
LLVMBuild.txt
Makefile Move yaml2obj to tools too. 2013-04-05 20:00:35 +00:00
UpdateCMakeLists.pl Generalize matching of add_executable to add_XXX_executable. 2012-11-22 07:48:52 +00:00
check-each-file
clang-parse-diagnostics-file [utils] Tweak utils/clang-parse-diagnostics-file to ignore autoconf diagnostics. 2012-12-22 00:47:06 +00:00
codegen-diff
countloc.sh
findmisopt
findoptdiff
findsym.pl
getsrcs.sh
lldbDataFormatters.py Simplify the SmallVector pretty printer for LLDB a bit and make it work with reference types. 2012-11-10 09:45:32 +00:00
llvm-compilers-check Avoid Unnecessary Builds 2013-01-28 22:05:50 +00:00
llvm-native-gcc
llvm-native-gxx
llvm.grm Unify clang/llvm attributes for asan/tsan/msan (LLVM part) 2013-02-26 06:58:09 +00:00
llvm.natvis A port of the Visual Studio 2012 debugger visualizers for common LLVM and clang datatypes. Patch thanks to Nico Rieck! 2013-01-25 23:37:25 +00:00
llvmdo
llvmgrep
makellvm
sort_includes.py Teach sort_includes.py to drop duplicated includes. 2012-12-21 18:00:08 +00:00
test_debuginfo.pl debuginfo-tests: Add support for an lldb wrapper script 2013-09-06 18:12:01 +00:00
wciia.py really fix permissions 2012-11-17 06:38:44 +00:00