[llvm-dev] [RFC] Improving integer divide optimization (related to D12082)

Mehdi Amini via llvm-dev llvm-dev at lists.llvm.org
Thu Aug 20 10:31:48 PDT 2015


> On Aug 20, 2015, at 10:22 AM, escha <escha at apple.com> wrote:
> 
>> 
>> On Aug 20, 2015, at 9:59 AM, Mehdi Amini <mehdi.amini at apple.com <mailto:mehdi.amini at apple.com>> wrote:
>> 
>>> 
>>> On Aug 20, 2015, at 9:46 AM, Steve King <steve at metrokings.com <mailto:steve at metrokings.com>> wrote:
>>> 
>>> On Wed, Aug 19, 2015 at 10:58 PM, Mehdi Amini <mehdi.amini at apple.com <mailto:mehdi.amini at apple.com>> wrote:
>>>> 
>>>> Isn’t the problem the fact that the patch makes it harder for a target to
>>>> get the generic code to reach its custom hook?
>>>> Now the "cheap pow2 sdiv” is merged with the generic “cheap div” you can’t
>>>> distinguish anymore.
>>>> 
>>> 
>>> Yes and also the issue of needing more information to make a smart
>>> isIntDivCheap() decision.
>>> 
>>> In visitSDIV(), checking looks like this when the denominator is a power of 2.
>>> 
>>>   if (TLI.isIntDivCheap(N->getValueType(0), MinSize))
>>>     return SDValue();
>>> 
>>>   // Target-specific implementation of sdiv x, pow2.
>>>   if (SDValue Res = BuildSDIVPow2(N))
>>>     return Res;
>>> 
>>> How about this for isIntDivCheap?
>>> 1) pass Function* to allow the target to decide for itself which
>>> attributes matter, and
>> 
>> If you want the attributes, I think you should pass the attributes and not the whole Function.
>> 
>> I’m not sure why MinSize does not trigger with -Os by default, Michael is it intended?
> 
> I think -Oz might be MinSize?  -Oz being absolute minimum size at the cost of significant speed, IIRC.

Sure, the question is more what is the tradeoff for -Os.
My remember of -Os is somehow “don’t perform transformation that increases code size”. 
It seems that it is what is done here: converting an (possibly expensive) division into multiple (less expensive) operations, probably increasing code size (target dependent admittedly).

— 
Mehdi

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150820/534c1415/attachment-0001.html>


More information about the llvm-dev mailing list