<div dir="ltr">Thank you so much, Marcello!<div><br></div><div>Regards,</div><div>Xiaochu</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Aug 26, 2015 at 9:51 PM Marcello Maggioni <<a href="mailto:mmaggioni@apple.com">mmaggioni@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Yes, RegMask is what you should use for the CallPreservedMask.<div>It means that the registers set as 1 are preserved from the Call (the callee saved) and the ones marked as 0 need to be saved instead.</div><div><br></div><div>Cheers,</div><div>Marcello</div></div><div style="word-wrap:break-word"><div><br><div><blockquote type="cite"><div>On 26 Aug 2015, at 18:51, Xiaochu Liu <<a href="mailto:xiaochu1122@gmail.com" target="_blank">xiaochu1122@gmail.com</a>> wrote:</div><br><div><div dir="ltr">Hi Marcello,<div><br></div><div>Thanks for your reply. I will try to pass down the mask!</div><div>I have one more question. I<span style="line-height:1.5;font-size:13.1999998092651px">n my backend I return </span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:16.7999992370605px;white-space:pre-wrap">CSR_RegMask</span><span style="line-height:1.5;font-size:13.1999998092651px"> in getCallPreservedMask and return </span><span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:16.7999992370605px;white-space:pre-wrap">CSR_SaveList</span><span style="line-height:1.5;font-size:13.1999998092651px"> in getCalleeSavedRegs. Is that a correct setup? I dumped the regmask and found that callee saved regs are marked 1 and non-callee saved regs are 0. </span></div><div><br></div><div><span style="font-size:13.1999998092651px;line-height:1.5">Thanks,</span></div><div><span style="font-size:13.1999998092651px;line-height:1.5">Xiaochu</span></div><div><span style="font-size:13.1999998092651px;line-height:1.5"><br></span></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Aug 26, 2015 at 5:58 PM Marcello Maggioni <<a href="mailto:mmaggioni@apple.com" target="_blank">mmaggioni@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Is the preserved mask passed down to your Call instruction in LowerCall ?<div><br></div><div>Marcello<br><div><blockquote type="cite"></blockquote></div></div></div><div style="word-wrap:break-word"><div><div><blockquote type="cite"><div>On 26 Aug 2015, at 17:52, Xiaochu Liu via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:</div><br></blockquote></div></div></div><div style="word-wrap:break-word"><div><div><blockquote type="cite"><div><div dir="ltr"><span style="font-size:13.1999998092651px;line-height:19.7999992370605px">Dear there,</span><div style="font-size:13.1999998092651px;line-height:19.7999992370605px"><br></div><div style="font-size:13.1999998092651px;line-height:19.7999992370605px">I was wondering how to preserve registers (caller saved) across calls. I implemented getCalleeSavedRegs and getCallPreservedMask. But the non-callee-saved registers are still not saved by caller. I want to spill these registers in use on stack right before the call. From my understanding, the register allocator in llvm will do the spill and restoring automatically? Is there anything I was supposed to do to make it happen?</div><div style="font-size:13.1999998092651px;line-height:19.7999992370605px"><br></div><div style="font-size:13.1999998092651px;line-height:19.7999992370605px">Thanks,</div><div style="font-size:13.1999998092651px;line-height:19.7999992370605px">Xiaochu</div></div></div></blockquote></div></div></div><div style="word-wrap:break-word"><div><div><blockquote type="cite"><div>
_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=THu9ANfN9LYlQTYNQdmA7D-MsdMl2OioTAKXjMfn7i4&m=T0_ZG8YhyugTycTFs3lQPt6d4mu6n739A4TOI-X1aJ0&s=xBBwHMhNOhAnZr_RXMJN6_kyjY2Wnap1c9aCtrfM7T8&e=" target="_blank">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=THu9ANfN9LYlQTYNQdmA7D-MsdMl2OioTAKXjMfn7i4&m=T0_ZG8YhyugTycTFs3lQPt6d4mu6n739A4TOI-X1aJ0&s=xBBwHMhNOhAnZr_RXMJN6_kyjY2Wnap1c9aCtrfM7T8&e=</a> <br></div></blockquote></div><br></div></div></blockquote></div>
</div></blockquote></div><br></div></div></blockquote></div>