summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@codeaurora.org>2017-06-23 19:20:12 +0000
committerChad Rosier <mcrosier@codeaurora.org>2017-06-23 19:20:12 +0000
commit6db9ff64a83078152967f9877038725fdeb9cf17 (patch)
treeb8d1aac9ac0779b04ba6786815d8e924d0d48fa3 /lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py
parent00ede4dcc1ff252d39f377b2858e5081351465c4 (diff)
downloadbcm5719-llvm-6db9ff64a83078152967f9877038725fdeb9cf17.tar.gz
bcm5719-llvm-6db9ff64a83078152967f9877038725fdeb9cf17.zip
[AArch64] Prefer Bcc to CBZ/CBNZ/TBZ/TBNZ when NZCV flags can be set for "free".
This patch contains a pass that transforms CBZ/CBNZ/TBZ/TBNZ instructions into a conditional branch (Bcc), when the NZCV flags can be set for "free". This is preferred on targets that have more flexibility when scheduling Bcc instructions as compared to CBZ/CBNZ/TBZ/TBNZ (assuming all other variables are equal). This can reduce register pressure and is also the default behavior for GCC. A few examples: add w8, w0, w1 -> cmn w0, w1 ; CMN is an alias of ADDS. cbz w8, .LBB_2 -> b.eq .LBB0_2 ; single def/use of w8 removed. add w8, w0, w1 -> adds w8, w0, w1 ; w8 has multiple uses. cbz w8, .LBB1_2 -> b.eq .LBB1_2 sub w8, w0, w1 -> subs w8, w0, w1 ; w8 has multiple uses. tbz w8, #31, .LBB6_2 -> b.ge .LBB6_2 In looking at all current sub-target machine descriptions, this transformation appears to be either positive or neutral. Differential Revision: https://reviews.llvm.org/D34220. llvm-svn: 306144
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/value/TestValueAPI.py')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud