<div>Hi Arnaud,</div>
<div> </div>
<div>Thank you for your patient explanation.</div>
<div> </div>
<div>Regards<br><br></div>
<div class="gmail_quote">2009/12/19 Arnaud Allard de Grandmaison <span dir="ltr"><<a href="mailto:Arnaud.AllardDeGrandMaison@dibcom.com">Arnaud.AllardDeGrandMaison@dibcom.com</a>></span><br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hi,<br><br>1. This instruction is not selected automatically by the instruction selector. The instruction combine / select stages insert registercopies,  and they are expanded later on by the copyRegToReg() function provided by the MSP430InstrInfo to this MOV16rr.<br>
<br>2. ReMaterializable means there is no need to find a way to preserve the value in a register : the instruction can be just be reissued whenever the value is needed. This remove some pressure on register alloc, and avoid unnecessary spilling.<br>
<br>3. It says that beside doing an add, it also affects (implicitly) the condition codes. This enables to link this node to a following conditional  instruction, using the condition codes. It is important that those 2 nodes stay stitched together to ensure the condition codes are not clobbered by another instruction, for example during instruction scheduling.<br>
<br>Best regards,<br>--<br>Arnaud de Grandmaison<br>________________________________________<br>From: <a href="mailto:llvmdev-bounces@cs.uiuc.edu">llvmdev-bounces@cs.uiuc.edu</a> [<a href="mailto:llvmdev-bounces@cs.uiuc.edu">llvmdev-bounces@cs.uiuc.edu</a>] On Behalf Of Heyu Zhu [<a href="mailto:zhu.heyu@gmail.com">zhu.heyu@gmail.com</a>]<br>
Sent: Friday, December 18, 2009 3:52 PM<br>To: <a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a><br>Subject: [LLVMdev] Questions of instruction target description of MSP430<br>
<div>
<div></div>
<div class="h5"><br>Hi everyone,<br><br>I am puzzled by several instruction defines in MSP430.<br><br>1<br>def MOV16rr : Pseudo<(outs GR16:$dst), (ins GR16:$src),<br>                    "mov.w\t{$src, $dst}",<br>
                    [ ]>;<br>Because it's an empty  dag pattern[ ], by what does instuction selector select intruction 'MOV16rr'?<br><br> 2<br>let canFoldAsLoad = 1, isReMaterializable = 1, mayHaveSideEffects = 1 in {<br>
def MOV16rm : Pseudo<(outs GR16:$dst), (ins memsrc:$src),<br>               "mov.w\t{$src, $dst}",<br>               [(set GR16:$dst, (load addr:$src))]>;<br>}<br>Please gvie me an explaination of the property IsReMaterialiable and the benefit if it is true with a simple sample<br>
<br> 3<br>def ADD16rr : Pseudo<(outs GR16:$dst), (ins GR16:$src1, GR16:$src2),<br>                    "add.w\t{$src2, $dst}",<br>                    [(set GR16:$dst, (add GR16:$src1, GR16:$src2)),<br>                     (implicit SRW)]>;<br>
What informaton instuction selector will get by '(implicit SRW)'?<br>I can't understand 'implicit SRW' completely.<br><br><br>Regards<br><br></div></div>_______________________________________________<br>
LLVM Developers mailing list<br><a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu/" target="_blank">http://llvm.cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote></div><br>