summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-05-28 04:09:18 +0000
committerCraig Topper <craig.topper@intel.com>2019-05-28 04:09:18 +0000
commit50d502826bf65666c39d4a2b47f3e2a12cf4960d (patch)
tree806ad20cff465bac49c9a31127865fb417966667 /llvm/lib/Analysis
parentf83c39e53f5636c43aac7a19e0b8f0784a6bc59f (diff)
downloadbcm5719-llvm-50d502826bf65666c39d4a2b47f3e2a12cf4960d.tar.gz
bcm5719-llvm-50d502826bf65666c39d4a2b47f3e2a12cf4960d.zip
[CostModel] Add really basic support for being able to query the cost of the FNeg instruction.
Summary: This reuses the getArithmeticInstrCost, but passes dummy values of the second operand flags. The X86 costs are wrong and can be improved in a follow up. I just wanted to stop it from reporting an unknown cost first. Reviewers: RKSimon, spatel, andrew.w.kaylor, cameron.mcinally Reviewed By: spatel Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62444 llvm-svn: 361788
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r--llvm/lib/Analysis/TargetTransformInfo.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/TargetTransformInfo.cpp b/llvm/lib/Analysis/TargetTransformInfo.cpp
index 2f9f1e069f8..53dd2bf2304 100644
--- a/llvm/lib/Analysis/TargetTransformInfo.cpp
+++ b/llvm/lib/Analysis/TargetTransformInfo.cpp
@@ -1043,6 +1043,16 @@ int TargetTransformInfo::getInstructionThroughput(const Instruction *I) const {
return getArithmeticInstrCost(I->getOpcode(), I->getType(), Op1VK, Op2VK,
Op1VP, Op2VP, Operands);
}
+ case Instruction::FNeg: {
+ TargetTransformInfo::OperandValueKind Op1VK, Op2VK;
+ TargetTransformInfo::OperandValueProperties Op1VP, Op2VP;
+ Op1VK = getOperandInfo(I->getOperand(0), Op1VP);
+ Op2VK = OK_AnyValue;
+ Op2VP = OP_None;
+ SmallVector<const Value *, 2> Operands(I->operand_values());
+ return getArithmeticInstrCost(I->getOpcode(), I->getType(), Op1VK, Op2VK,
+ Op1VP, Op2VP, Operands);
+ }
case Instruction::Select: {
const SelectInst *SI = cast<SelectInst>(I);
Type *CondTy = SI->getCondition()->getType();
OpenPOWER on IntegriCloud