aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2012-03-26 23:31:00 +0000
committerEvan Cheng <evan.cheng@apple.com>2012-03-26 23:31:00 +0000
commita2b48d985b46f2400ac7183e64a38b32bd00edd2 (patch)
tree892ea7a69770545902895ab9c9de5b6e9ef66449 /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
parent95e021faf57e1f68d6b862323b048e3fcf83a15a (diff)
downloadllvm-a2b48d985b46f2400ac7183e64a38b32bd00edd2.zip
llvm-a2b48d985b46f2400ac7183e64a38b32bd00edd2.tar.gz
llvm-a2b48d985b46f2400ac7183e64a38b32bd00edd2.tar.bz2
ARM has a peephole optimization which looks for a def / use pair. The def
produces a 32-bit immediate which is consumed by the use. It tries to fold the immediate by breaking it into two parts and fold them into the immmediate fields of two uses. e.g movw r2, #40885 movt r3, #46540 add r0, r0, r3 => add.w r0, r0, #3019898880 add.w r0, r0, #30146560 ; However, this transformation is incorrect if the user produces a flag. e.g. movw r2, #40885 movt r3, #46540 adds r0, r0, r3 => add.w r0, r0, #3019898880 adds.w r0, r0, #30146560 Note the adds.w may not set the carry flag even if the original sequence would. rdar://11116189 llvm-svn: 153484
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp')
0 files changed, 0 insertions, 0 deletions