diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2014-10-31 15:17:36 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2014-10-31 15:17:36 +0000 |
commit | a675e550ca46d91e5f393602d66385482816e1ec (patch) | |
tree | 0513fe6fa046b154b5f3a3a07c48da0ed4c21f81 /llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp | |
parent | 9992b167aea97de3a13bf0f0b95189a4e5f4bf92 (diff) | |
download | bcm5719-llvm-a675e550ca46d91e5f393602d66385482816e1ec.tar.gz bcm5719-llvm-a675e550ca46d91e5f393602d66385482816e1ec.zip |
[AArch64] CondOpt pass is missing FCMP instructions when searching backward for
a CMP which defines the flags used by B.CC.
http://reviews.llvm.org/D6047
Patch by Zhaoshi Zheng <zhaoshiz@codeaurora.org>!
llvm-svn: 220961
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp b/llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp index bd7918d3b62..b04e0471f7d 100644 --- a/llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp +++ b/llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp @@ -155,6 +155,17 @@ MachineInstr *AArch64ConditionOptimizer::findSuitableCompare( case AArch64::ADDSXri: return I; + // Prevent false positive case like: + // cmp w19, #0 + // cinc w0, w19, gt + // ... + // fcmp d8, #0.0 + // b.gt .LBB0_5 + case AArch64::FCMPDri: + case AArch64::FCMPSri: + case AArch64::FCMPESri: + case AArch64::FCMPEDri: + case AArch64::SUBSWrr: case AArch64::SUBSXrr: case AArch64::ADDSWrr: |