[LLVMdev] A question about instruction operands.
Richard Osborne
rlsosborne at googlemail.com
Tue Sep 23 06:30:21 PDT 2008
sanjiv gupta wrote:
> On Tue, 2008-09-23 at 13:33 +0100, Richard Osborne wrote:
>
>> sanjiv gupta wrote:
>>
>>> I have a question:
>>> In the pattern below from X86
>>>
>>> def INC8r : I<0xFE, MRM0r, (outs GR8 :$dst), (ins GR8 :$src),
>>> "inc{b}\tdst",
>>> [(set GR8:$dst, (add GR8:$src, 1))]>;
>>>
>>> Since we are emitting only "inc $dst",
>>> What makes sure that the $src and $dst are same register?
>>>
>>> - Sanjiv
>>>
>> It's enclosed inside :
>>
>> let isTwoAddress = 1 in {
>> ...
>> }
>>
>> (you'll need to scroll up a fair amount to find this).
>>
>>
> That means, it gets converted to
> dst = src;
> dst = dst + 1;
>
> Right ?
>
> - Sanjiv
>
Yes, I believe the two address instruction pass performs exactly this
transformation.
Richard
More information about the llvm-dev
mailing list