[llvm-commits] [llvm] r59760 - in /llvm/trunk: include/llvm/CodeGen/SelectionDAGNodes.h lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Bill Wendling isanbard at gmail.com
Thu Nov 20 18:06:45 PST 2008


On Thu, Nov 20, 2008 at 5:58 PM, Dan Gohman <gohman at apple.com> wrote:
>
> On Nov 20, 2008, at 5:41 PM, Chris Lattner wrote:
>
>>
>> On Nov 20, 2008, at 5:08 PM, Dan Gohman wrote:
>>
>>>
>>> On Nov 20, 2008, at 4:38 PM, Bill Wendling wrote:
>>>
>>>> On Thu, Nov 20, 2008 at 4:22 PM, Dan Gohman <gohman at apple.com>
>>>> wrote:
>>>>>
>>>>> On Nov 20, 2008, at 4:11 PM, Bill Wendling wrote:
>>>>>> +
>>>>>> +    // Overflow-aware nodes for arithmetic operations. These
>>>>>> nodes
>>>>>> take two
>>>>>> +    // operands: the normal lhs and rhs to the add. They produce
>>>>>> two results:
>>>>>> +    // the normal result of the add, and a flag indicating
>>>>>> whether
>>>>>> an overflow
>>>>>> +    // occured. These nodes are generated from the llvm.
>>>>>> [su]add.with.overflow
>>>>>> +    // intrinsics. They are lowered by target-dependent code.
>>>>>> +    SADDO, UADDO,
>>>>>
>>>>> Hi Bill,
>>>>>
>>>>> Is UADDO is equivalent to ADDC?
>>>>>
>>>> Hmm. It does appear to be similar. How is ADDC handled later on? I
>>>> see
>>>> that the DAG combiner does some reasoning about trivial cases, but
>>>> how
>>>> is it handled in the back ends?
>>>
>>> In the x86 backend, ADDC is lowered to a single add instruction, with
>>> the carry information carried by the flags register.
>>
>> They aren't the same.  ADDC returns a value + flag.  SADDO returns a
>> value + bool.  The use of the bool may very well be a store to memory
>> or something like that.  You can't flag these together.
>
> Ok. Bill, can you update the comment to reflect this?
>
Yes. Sorry for the confusion. :-)

Also, ignore my recent check-in. I was going to change it, but I'm
changing it back soon.

-bw



More information about the llvm-commits mailing list