[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