diff options
author | Javed Absar <javed.absar@arm.com> | 2016-10-13 14:57:43 +0000 |
---|---|---|
committer | Javed Absar <javed.absar@arm.com> | 2016-10-13 14:57:43 +0000 |
commit | 85874a9360334ddb9619aca6344b8ee53296fa1e (patch) | |
tree | c3841773c33a70d7c4135d5f144ad869a4d48d25 /llvm/lib/Target/ARM/ARMSubtarget.h | |
parent | 1d4b163fc0fadab7ffe87149f3d1c897ded184f9 (diff) | |
download | bcm5719-llvm-85874a9360334ddb9619aca6344b8ee53296fa1e.tar.gz bcm5719-llvm-85874a9360334ddb9619aca6344b8ee53296fa1e.zip |
[ARM]: Assign cost of scaling used in addressing mode for ARM cores
This patch assigns cost of the scaling used in addressing.
On many ARM cores, a negated register offset takes longer than a
non-negated register offset, in a register-offset addressing mode.
For instance:
LDR R0, [R1, R2 LSL #2]
LDR R0, [R1, -R2 LSL #2]
Above, (1) takes less cycles than (2).
By assigning appropriate scaling factor cost, we enable the LLVM
to make the right trade-offs in the optimization and code-selection phase.
Differential Revision: http://reviews.llvm.org/D24857
Reviewers: jmolloy, rengolin
llvm-svn: 284127
Diffstat (limited to 'llvm/lib/Target/ARM/ARMSubtarget.h')
-rw-r--r-- | llvm/lib/Target/ARM/ARMSubtarget.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.h b/llvm/lib/Target/ARM/ARMSubtarget.h index 04e5ff288ba..cf53831defe 100644 --- a/llvm/lib/Target/ARM/ARMSubtarget.h +++ b/llvm/lib/Target/ARM/ARMSubtarget.h @@ -235,6 +235,9 @@ protected: /// particularly effective at zeroing a VFP register. bool HasZeroCycleZeroing = false; + /// HasFPAO - if true, processor does positive address offset computation faster + bool HasFPAO = false; + /// If true, if conversion may decide to leave some instructions unpredicated. bool IsProfitableToUnpredicate = false; @@ -453,6 +456,7 @@ public: bool hasTrustZone() const { return HasTrustZone; } bool has8MSecExt() const { return Has8MSecExt; } bool hasZeroCycleZeroing() const { return HasZeroCycleZeroing; } + bool hasFPAO() const { return HasFPAO; } bool isProfitableToUnpredicate() const { return IsProfitableToUnpredicate; } bool hasSlowVGETLNi32() const { return HasSlowVGETLNi32; } bool hasSlowVDUP32() const { return HasSlowVDUP32; } |