[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
Sat May 18 17:30:48 PDT 2013
(Sorry there is a typo therein. When I say lowering is done for all 4 types for ResNo == 1 I meant for ResNo == 0 and ResNo == 1).
Michael
On May 18, 2013, at 5:26 PM, Michael Gottesman <mgottesman at apple.com> wrote:
>
> On May 18, 2013, at 2:22 AM, Duncan Sands <duncan.sands at gmail.com> wrote:
>
>> Hi Michael,
>>
>> On 17/05/13 23:33, Michael Gottesman wrote:
>>> Hows this look Duncan/Sean?
>>
>> returning SDValue() in PromoteIntRes_ADDSUBC is not valid. There is no default
>> method that can be fallen back to. If you don't want to handle the ResNo != 1
>> case then you must assert/fail, not just return SDValue().
>>
>> Ciao, Duncan.
>
> Hey Duncan,
>
> In the updated patch are the changes that you requested (i.e. I am not just returning SDValue() in said patch). The lowering is done for all 4 types for ResNo == 1. I should have said something in the email enclosing the updated patch. My apologies for not being clearer.
>
> Michael
>
>>
>>>
>>>
>>>
>>>
>>> Michael
>>>
>>> On May 16, 2013, at 10:41 AM, Michael Gottesman <mgottesman at apple.com
>>> <mailto:mgottesman at apple.com>> wrote:
>>>
>>>> I am trying to be incremental and did not have a need for such lowering. On
>>>> the other hand if you want I can implement that in this patch. Just state your
>>>> preference = ).
>>>>
>>>> Michael
>>>>
>>>> On May 16, 2013, at 1:34 AM, Duncan Sands <duncan.sands at gmail.com
>>>> <mailto:duncan.sands at gmail.com>> wrote:
>>>>
>>>>> Hi Michael,
>>>>>
>>>>> On 15/05/13 19:37, Michael Gottesman wrote:
>>>>>> The attached patch teaches selection DAG how to promote the integer carry
>>>>>> result of an {add,sub}{c,e} node to a larger integer type. It is a part of a
>>>>>> larger set of patches that I will be committing over the next little bit to
>>>>>> enable the optimization of uaddo/usubo chains.
>>>>>>
>>>>>> Please Review,
>>>>>> Michael
>>>>>
>>>>> +SDValue DAGTypeLegalizer::PromoteIntRes_ADDSUBC(SDNode *N, unsigned ResNo) {
>>>>> + if (ResNo == 1)
>>>>> + return PromoteIntRes_Overflow(N);
>>>>> + return SDValue();
>>>>> +}
>>>>> +
>>>>> +SDValue DAGTypeLegalizer::PromoteIntRes_ADDSUBE(SDNode *N, unsigned ResNo) {
>>>>> + if (ResNo == 1)
>>>>> + return PromoteIntRes_Overflow(N);
>>>>> + return SDValue();
>>>>> +}
>>>>>
>>>>> why do you return SDValue() if ResNo != 1 ? Shouldn't you either assert or
>>>>> promote the value?
>>>>>
>>>>> Ciao, Duncan.
>>>>>
>>>>> _______________________________________________
>>>>> llvm-commits mailing list
>>>>> llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>>
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at cs.uiuc.edu <mailto:llvm-commits at cs.uiuc.edu>
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>
>>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list