[PATCH] [Multiprecision Arithmetic Optimization] Teach SelectionDAG how to promote the integer carry result of {add, sub}{c, e} to a larger integer type.

Michael Gottesman mgottesman at apple.com
Mon Jun 24 13:41:25 PDT 2013


Ping?

On Jun 18, 2013, at 11:14 AM, Michael Gottesman <mgottesman at apple.com> wrote:

> Hey Duncan.
> 
> Sorry for the delay. Attached is a patch which follows what you suggested on IRC. Specifically:
> 
> 1. I updated the logic to handle the promotion of UADDO so that it just uses 1 getSetCC instead of truncating/zexting which is unnecessary since:
> 
> Addition:      x + y < x => carry
> Subtraction: x - y > x => carry
> 
> 2. I refactored out said method and used it to also handle the promotion of ADDC.
> 
> 3. I implemented a similar algorithm for ADDE. Specifically for addition:
> 
> sum = x + y + c_in
> carry = [(x & y) | ((x | y) & ~sum)]  >> ((sizeof(carry) << 3)-1)
>          = [(x & y) | ((x | y) & (sum ^ -1))]  >> ((sizeof(carry) << 3)-1)
> 
> and for subtraction:
> 
> diff = x - y - c_in
> carry = [(~x & y) | ((~x | y) & diff)] >> ((sizeof(carry) << 3)-1)
>          = [((x ^ -1) & y) | (((x ^ -1) | y) & diff)  >> ((sizeof(carry) << 3)-1)]
> 
> Hows it look?
> 
> Michael
> 
> <0001-Teach-SelectionDAG-how-to-promote-the-integer-argume.patch>
> 
> On May 26, 2013, at 1:35 PM, Michael Gottesman <mgottesman at apple.com> wrote:
> 
>> Chatted w/Duncan on IRC. I will follow the UADDO logic here (preparing patch).
>> 
>> Michael
>> 
>> On May 25, 2013, at 5:54 AM, Duncan Sands <duncan.sands at gmail.com> wrote:
>> 
>>> Hi Michael,
>>> 
>>>> Would zero extending just ResNo 0 be a satisfactory lowering (i.e. no inputs,
>>>> just ResNo 0)?
>>> 
>>> do you mean not changing the node, just creating a node to extend ResNo 0?  If
>>> so, that won't work: the legalizer will go into an infinite loop as it will keep
>>> on trying to legalize the original node.
>>> 
>>> Ciao, Duncan.
>>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130624/d562877d/attachment.html>


More information about the llvm-commits mailing list