summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
diff options
context:
space:
mode:
authorAhmed Bougacha <ahmed.bougacha@gmail.com>2015-03-03 01:09:14 +0000
committerAhmed Bougacha <ahmed.bougacha@gmail.com>2015-03-03 01:09:14 +0000
commit066d0b8e646ef91c787dc4deea98433cceab7793 (patch)
tree04658de57ec9375a4a4e7bb94278ae5308d41120 /lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
parent1d2c3f91cdb2dcef79739ddba8ddfb7effcef068 (diff)
downloadbcm5719-llvm-066d0b8e646ef91c787dc4deea98433cceab7793.tar.gz
bcm5719-llvm-066d0b8e646ef91c787dc4deea98433cceab7793.zip
[X86] Combine (cmov (and/or (setcc) (setcc))) into (cmov (cmov)).
Fold and/or of setcc's to double CMOV: (CMOV F, T, ((cc1 | cc2) != 0)) -> (CMOV (CMOV F, T, cc1), T, cc2) (CMOV F, T, ((cc1 & cc2) != 0)) -> (CMOV (CMOV T, F, !cc1), F, !cc2) When we can't use the CMOV instruction, it might increase branch mispredicts. When we can, or when there is no mispredict, this improves throughput and reduces register pressure. These can't be catched by generic combines, because the pattern can appear when legalizing some instructions (such as fcmp une). rdar://19767934 http://reviews.llvm.org/D7634 llvm-svn: 231045
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud