aboutsummaryrefslogtreecommitdiffstats
path: root/docs/CodeGenerator.rst
diff options
context:
space:
mode:
authorStephen Hines <srhines@google.com>2013-05-02 16:19:29 -0700
committerStephen Hines <srhines@google.com>2013-05-02 16:19:29 -0700
commit38578c4919ea18ceb27e29988b2d857afe6215bf (patch)
tree6718ee1e6a1a59f46b6c847439ebfcd291c1e393 /docs/CodeGenerator.rst
parentffb69c62ac54b0af5768ae9486b93b39a6c6b94c (diff)
parenta7a05ee70cb07f32996a0587a636b406c746b71b (diff)
downloadexternal_llvm-38578c4919ea18ceb27e29988b2d857afe6215bf.zip
external_llvm-38578c4919ea18ceb27e29988b2d857afe6215bf.tar.gz
external_llvm-38578c4919ea18ceb27e29988b2d857afe6215bf.tar.bz2
Merge remote-tracking branch 'upstream/master' into merge-20130502
Conflicts: lib/Support/Unix/Signals.inc unittests/Transforms/Utils/Cloning.cpp Change-Id: I027581a4390ec3ce4cd8d33da8b5f4c0c7d372c8
Diffstat (limited to 'docs/CodeGenerator.rst')
-rw-r--r--docs/CodeGenerator.rst18
1 files changed, 18 insertions, 0 deletions
diff --git a/docs/CodeGenerator.rst b/docs/CodeGenerator.rst
index b5d4180..75415ab 100644
--- a/docs/CodeGenerator.rst
+++ b/docs/CodeGenerator.rst
@@ -1038,6 +1038,24 @@ for your target. It has the following strengths:
are used to manipulate the input immediate (in this case, take the high or low
16-bits of the immediate).
+* When using the 'Pat' class to map a pattern to an instruction that has one
+ or more complex operands (like e.g. `X86 addressing mode`_), the pattern may
+ either specify the operand as a whole using a ``ComplexPattern``, or else it
+ may specify the components of the complex operand separately. The latter is
+ done e.g. for pre-increment instructions by the PowerPC back end:
+
+ ::
+
+ 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.
+
* While the system does automate a lot, it still allows you to write custom C++
code to match special cases if there is something that is hard to
express.