[PATCH] D34458: [TTI] Refine the cost of EXT in getUserCost()
Haicheng Wu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 20 06:52:17 PDT 2017
haicheng added inline comments.
================
Comment at: llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h:167
+
+ return TargetTransformInfo::TCC_Basic;
+ }
----------------
delena wrote:
> haicheng wrote:
> > delena wrote:
> > > haicheng wrote:
> > > > delena wrote:
> > > > > At this point we should call to getOperationCost() and ask the target about the cost of Ext for the given type.
> > > > Sorry about the performance regression.
> > > >
> > > > I think isExtFree(I) above checks isZExtFree() with its types. The part that can affect x86 is isExtLoad(). Do you want me to add a target hook to choose use refined ext cost?
> > > First, I should understand why if the Src is not ExtLoad you return TargetTransformInfo::TCC_Basic.
> > > Why you are not asking the target about the actual cost of the Ext?
> > I think that getTLI()->isExtFree(I) above asks the actual cost of the Ext which is equivalent to calling getOperationCost() since they both check target specific isZExtFree() with type.
> getTLI()->isExtFree(I) is a boolean function that returns true or false. But if the Ext is not free you should provide an actual cost and not TCC_Basic.
Do you want me to change this line to
```
return getOperationCost(Operator::getOpcode(I), I->getType(), I->getOperand(0)->getType());
```
which returns TCC_Basic, TCC_Free, or TCC_Expensive?
Repository:
rL LLVM
https://reviews.llvm.org/D34458
More information about the llvm-commits
mailing list