this is done, tested by CodeGen/ARM/iabs.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95609 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-02-08 23:48:10 +00:00
parent d863b766f5
commit c133457269

View File

@ -71,26 +71,6 @@ were disabled due to badness with the ARM carry flag on subtracts.
//===---------------------------------------------------------------------===//
We currently compile abs:
int foo(int p) { return p < 0 ? -p : p; }
into:
_foo:
rsb r1, r0, #0
cmn r0, #1
movgt r1, r0
mov r0, r1
bx lr
This is very, uh, literal. This could be a 3 operation sequence:
t = (p sra 31);
res = (p xor t)-t
Which would be better. This occurs in png decode.
//===---------------------------------------------------------------------===//
More load / store optimizations:
1) Better representation for block transfer? This is from Olden/power: