Add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109448 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Anton Korobeynikov 2010-07-26 21:48:35 +00:00
parent 72eb300715
commit 25a6ab0144

View File

@ -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.
//===---------------------------------------------------------------------===//