summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2010-07-26 21:48:35 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2010-07-26 21:48:35 +0000
commitb61a6f2742e0823c2d6c23e34bbd141c9367c9cb (patch)
tree2a5e49ef014b711fd92ccd5f966eeb07af745362 /llvm/lib
parente83f624f4469066aedf42dda32855d7dd45f9ed8 (diff)
downloadbcm5719-llvm-b61a6f2742e0823c2d6c23e34bbd141c9367c9cb.tar.gz
bcm5719-llvm-b61a6f2742e0823c2d6c23e34bbd141c9367c9cb.zip
Add a note
llvm-svn: 109448
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/README.txt21
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/README.txt b/llvm/lib/Target/ARM/README.txt
index ba4e5da5a05..c31f22766af 100644
--- a/llvm/lib/Target/ARM/README.txt
+++ b/llvm/lib/Target/ARM/README.txt
@@ -636,3 +636,24 @@ A custom Thumb version would also be a slight improvement over the generic
version.
//===---------------------------------------------------------------------===//
+
+Consider the following simple C code:
+
+void foo(unsigned char *a, unsigned char *b, int *c) {
+ if ((*a | *b) == 0) *c = 0;
+}
+
+currently llvm-gcc generates something like this (nice branchless code I'd say):
+
+       ldrb    r0, [r0]
+       ldrb    r1, [r1]
+       orr     r0, r1, r0
+       tst     r0, #255
+       moveq   r0, #0
+       streq   r0, [r2]
+       bx      lr
+
+Note that both "tst" and "moveq" are redundant.
+
+//===---------------------------------------------------------------------===//
+
OpenPOWER on IntegriCloud