diff options
| author | Karthik Bhat <kv.bhat@samsung.com> | 2014-08-25 04:56:54 +0000 |
|---|---|---|
| committer | Karthik Bhat <kv.bhat@samsung.com> | 2014-08-25 04:56:54 +0000 |
| commit | 7f33ff7deaea1454422a99d3a497fa0d11955e2a (patch) | |
| tree | 87a2d6dddf2342728ee8a1d9c75dfe0bc5ed05d2 /llvm/lib/Analysis | |
| parent | c6914d068f317f3c8bc9734b6bbeb090975b50b1 (diff) | |
| download | bcm5719-llvm-7f33ff7deaea1454422a99d3a497fa0d11955e2a.tar.gz bcm5719-llvm-7f33ff7deaea1454422a99d3a497fa0d11955e2a.zip | |
Allow vectorization of division by uniform power of 2.
This patch adds support to recognize division by uniform power of 2 and modifies the cost table to vectorize division by uniform power of 2 whenever possible.
Updates Cost model for Loop and SLP Vectorizer.The cost table is currently only updated for X86 backend.
Thanks to Hal, Andrea, Sanjay for the review. (http://reviews.llvm.org/D4971)
llvm-svn: 216371
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/TargetTransformInfo.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/lib/Analysis/TargetTransformInfo.cpp b/llvm/lib/Analysis/TargetTransformInfo.cpp index 7ac22303deb..b8f3630df8d 100644 --- a/llvm/lib/Analysis/TargetTransformInfo.cpp +++ b/llvm/lib/Analysis/TargetTransformInfo.cpp @@ -171,11 +171,12 @@ unsigned TargetTransformInfo::getMaximumUnrollFactor() const { return PrevTTI->getMaximumUnrollFactor(); } -unsigned TargetTransformInfo::getArithmeticInstrCost(unsigned Opcode, - Type *Ty, - OperandValueKind Op1Info, - OperandValueKind Op2Info) const { - return PrevTTI->getArithmeticInstrCost(Opcode, Ty, Op1Info, Op2Info); +unsigned TargetTransformInfo::getArithmeticInstrCost( + unsigned Opcode, Type *Ty, OperandValueKind Op1Info, + OperandValueKind Op2Info, OperandValueProperties Opd1PropInfo, + OperandValueProperties Opd2PropInfo) const { + return PrevTTI->getArithmeticInstrCost(Opcode, Ty, Op1Info, Op2Info, + Opd1PropInfo, Opd2PropInfo); } unsigned TargetTransformInfo::getShuffleCost(ShuffleKind Kind, Type *Tp, @@ -569,7 +570,8 @@ struct NoTTI final : ImmutablePass, TargetTransformInfo { } unsigned getArithmeticInstrCost(unsigned Opcode, Type *Ty, OperandValueKind, - OperandValueKind) const override { + OperandValueKind, OperandValueProperties, + OperandValueProperties) const override { return 1; } |

