mirror of
https://github.com/RPCSX/llvm.git
synced 2025-03-03 18:37:56 +00:00
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:
parent
72eb300715
commit
25a6ab0144
@ -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.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user