diff options
author | Juergen Ributzka <juergen@apple.com> | 2014-01-28 01:20:14 +0000 |
---|---|---|
committer | Juergen Ributzka <juergen@apple.com> | 2014-01-28 01:20:14 +0000 |
commit | 659ce00d60decfa1219274f82b249f0979cd1132 (patch) | |
tree | bcf87bc345d4128ba210d7164990e3dd44330297 /llvm/lib/Target/ARM/ARMISelLowering.h | |
parent | 18865db3c1fef7922288ca3dabdd1a2b7e54ba04 (diff) | |
download | bcm5719-llvm-659ce00d60decfa1219274f82b249f0979cd1132.tar.gz bcm5719-llvm-659ce00d60decfa1219274f82b249f0979cd1132.zip |
[TLI] Add a new hook to TargetLowering to query the target if a load of a constant should be converted to simply the constant itself.
Before this patch we used getIntImmCost from TargetTransformInfo to determine if
a load of a constant should be converted to just a constant, but the threshold
for this was set to an arbitrary value. This value works well for the two
targets (X86 and ARM) that implement this target-hook, but it isn't
target-independent at all.
Now targets have the possibility to decide directly if this optimization should
be performed. The default value is set to false to preserve the current
behavior. The target hook has been moved to TargetLowering, which removed the
last use and need of TargetTransformInfo in SelectionDAG.
llvm-svn: 200271
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelLowering.h')
-rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.h b/llvm/lib/Target/ARM/ARMISelLowering.h index bcd60593081..6879972e4d9 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.h +++ b/llvm/lib/Target/ARM/ARMISelLowering.h @@ -385,6 +385,12 @@ namespace llvm { virtual bool getTgtMemIntrinsic(IntrinsicInfo &Info, const CallInst &I, unsigned Intrinsic) const; + + /// \brief Returns true if it is beneficial to convert a load of a constant + /// to just the constant itself. + virtual bool shouldConvertConstantLoadToIntImm(const APInt &Imm, + Type *Ty) const; + protected: std::pair<const TargetRegisterClass*, uint8_t> findRepresentativeClass(MVT VT) const; |