llvm-6502/utils
Ulrich Weigand ec8d1a5b72 Extend TableGen instruction selection matcher to improve handling
of complex instruction operands (e.g. address modes).

Currently, if a Pat pattern creates an instruction that has a complex
operand (i.e. one that consists of multiple sub-operands at the MI
level), this operand must match a ComplexPattern DAG pattern with the
correct number of output operands.

This commit extends TableGen to alternatively allow match a complex
operands against multiple separate operands at the DAG level.

This allows using Pat patterns to match pre-increment nodes like
pre_store (which must have separate operands at the DAG level) onto
an instruction pattern that uses a multi-operand memory operand,
like the following example on PowerPC (will be committed as a
follow-on patch):

  def STWU  : DForm_1<37, (outs ptr_rc:$ea_res), (ins GPRC:$rS, memri:$dst),
                    "stwu $rS, $dst", LdStStoreUpd, []>,
                    RegConstraint<"$dst.reg = $ea_res">, NoEncode<"$ea_res">;

  def : Pat<(pre_store GPRC:$rS, ptr_rc:$ptrreg, iaddroff:$ptroff),
            (STWU GPRC:$rS, iaddroff:$ptroff, ptr_rc:$ptrreg)>;

Here, the pair of "ptroff" and "ptrreg" operands is matched onto the
complex operand "dst" of class "memri" in the "STWU" instruction.

Approved by Jakob Stoklund Olesen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177428 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-19 19:51:09 +00:00
..
bugpoint
buildit
count
crosstool
emacs
FileCheck Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration. 2013-02-12 21:21:59 +00:00
FileUpdate
fpcmp
git
jedit
kate
KillTheDoctor
lint
lit lit.TestFormats.GoogleTest: Honor LitConfig.noExecute, or --no-execute were ignored. 2013-03-13 06:16:33 +00:00
llvm-build
llvm-lit
Misc
not
obj2yaml
PerfectShuffle
release
TableGen Extend TableGen instruction selection matcher to improve handling 2013-03-19 19:51:09 +00:00
Target/ARM
testgen
textmate
unittest 'Hexadecimal' has two 'a's and only one 'i'. 2013-02-25 18:11:18 +00:00
valgrind
vim Enable syntax highlighting for reStructuredText files. 2013-02-28 06:43:24 +00:00
yaml2obj
yaml-bench
check-each-file
clang-parse-diagnostics-file
codegen-diff
countloc.sh
DSAclean.py
DSAextract.py
findmisopt
findoptdiff
findsym.pl
GenLibDeps.pl
GetRepositoryPath
GetSourceVersion
getsrcs.sh
lldbDataFormatters.py
llvm-compilers-check
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
LLVMBuild.txt
llvmdo
llvmgrep
Makefile
makellvm
profile.pl
sort_includes.py
test_debuginfo.pl
UpdateCMakeLists.pl
wciia.py