aboutsummaryrefslogtreecommitdiff
path: root/tools/llvm2cpp/CppWriter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-04-11 05:32:27 +0000
committerChris Lattner <sabre@nondot.org>2007-04-11 05:32:27 +0000
commit20a35c3fa57ba9c3184d8848541d9a89b6c2b338 (patch)
tree58962bc1cc25edc4cf4058ae4adfd78ecdc80dd0 /tools/llvm2cpp/CppWriter.cpp
parentcb42ba454cb5fdd81ab6727b452946bfcb424fcb (diff)
Teach the codegen to turn [aez]ext (setcc) -> selectcc of 1/0, which often
allows other simplifications. For example, this compiles: int isnegative(unsigned int X) { return !(X < 2147483648U); } Into this code: x86: movl 4(%esp), %eax shrl $31, %eax ret arm: mov r0, r0, lsr #31 bx lr thumb: lsr r0, r0, #31 bx lr instead of: x86: cmpl $0, 4(%esp) sets %al movzbl %al, %eax ret arm: mov r3, #0 cmp r0, #0 movlt r3, #1 mov r0, r3 bx lr thumb: mov r2, #1 mov r1, #0 cmp r0, #0 blt LBB1_2 @entry LBB1_1: @entry cpy r2, r1 LBB1_2: @entry cpy r0, r2 bx lr Testcase here: test/CodeGen/Generic/ispositive.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35883 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm2cpp/CppWriter.cpp')
0 files changed, 0 insertions, 0 deletions