summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/ARMSubtarget.h
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2009-11-18 03:34:27 +0000
committerBob Wilson <bob.wilson@apple.com>2009-11-18 03:34:27 +0000
commit834b08af8d3d8fc6c76ac6ca40674565689e8d7f (patch)
tree54f4512d0d88c69265505976b1d17cdd845a2fb9 /lib/Target/ARM/ARMSubtarget.h
parent5eea34267376e76aceb53b6c3dfead816021258f (diff)
downloadllvm-834b08af8d3d8fc6c76ac6ca40674565689e8d7f.tar.gz
llvm-834b08af8d3d8fc6c76ac6ca40674565689e8d7f.tar.bz2
llvm-834b08af8d3d8fc6c76ac6ca40674565689e8d7f.tar.xz
Add a target hook to allow changing the tail duplication limit based on the
contents of the block to be duplicated. Use this for ARM Cortex A8/9 to be more aggressive tail duplicating indirect branches, since it makes it much more likely that they will be predicted in the branch target buffer. Testcase coming soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89187 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMSubtarget.h')
-rw-r--r--lib/Target/ARM/ARMSubtarget.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h
index a95c8a5ccf..3d0e01e99b 100644
--- a/lib/Target/ARM/ARMSubtarget.h
+++ b/lib/Target/ARM/ARMSubtarget.h
@@ -50,6 +50,9 @@ protected:
/// determine if NEON should actually be used.
bool UseNEONForSinglePrecisionFP;
+ /// HasBranchTargetBuffer - True if processor can predict indirect branches.
+ bool HasBranchTargetBuffer;
+
/// IsThumb - True if we are in thumb mode, false if in ARM mode.
bool IsThumb;
@@ -123,6 +126,8 @@ protected:
bool isThumb2() const { return IsThumb && (ThumbMode == Thumb2); }
bool hasThumb2() const { return ThumbMode >= Thumb2; }
+ bool hasBranchTargetBuffer() const { return HasBranchTargetBuffer; }
+
bool isR9Reserved() const { return IsR9Reserved; }
const std::string & getCPUString() const { return CPUString; }