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
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? > > - SanjivIt's enclosed inside : let isTwoAddress = 1 in { ... } (you'll need to scroll up a fair amount to find this). Richard
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> Richard > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
BTW, please use the operand constraint syntax instead of the deprecated isTwoAddress syntax: let Constraints = "$src1 = $dst" in Evan On Sep 23, 2008, at 5:33 AM, 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). > > Richard > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Seemingly Similar Threads
- [LLVMdev] A question about instruction operands.
- [LLVMdev] A question about instruction operands.
- [LLVMdev] A question about instruction operands.
- [LLVMdev] ISel using an operand as both source and destination
- [LLVMdev] ISel using an operand as both source and destination