<div dir="ltr"><br><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><i><font size="2" face="monospace, monospace"><b>Vivek Pandya</b></font></i><div><br></div></div></div></div></div></div>
<br><div class="gmail_quote">On Wed, Mar 23, 2016 at 10:18 PM, Quentin Colombet <span dir="ltr"><<a href="mailto:qcolombet@apple.com" target="_blank">qcolombet@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">The pass manager already has support for calligraph connected region IIRC.<br></blockquote><div>If I am not wrong Quentin and Mehdi Amini refers to CallGraphSCCPass.cpp </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
As for the regmask part, we probably could hack something up in a week or so, but I believe this is not what Vivek had in mind.<br>
<br></blockquote><div>Which operands should be kept in registers between function call should be justifying and for that we can take help from some research work ( some of I mentioned previously I have to read it again. Please suggest some more relevant papers  ) once that is implemented we can update the regmask for a call instruction to indicate which registers are free to be used. Am I going in correct direction ?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
I think the main challenge of a real inter-procedural register allocator is to change all of the calling convention dynamically and more importantly convey the right information to other tools (via CFA, CFI, etc.).<br>
<br></blockquote><div>Here for calling convention do you mean that has to be handle for different kind of backends differently  or you are referring some thing I don't know. I don't understand what do you mean by 'convey the right information to other tool' if we have updated regmask for a call instruction then MachineFunction should be able to reflect that fact in MachineFunction pass which is used for intra-procedural register allocation, all we have done is allocated some registers that should live across the function call.</div><div><br></div><div>Sincerely,</div><div>Vivek</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Cheers,<br>
Q.<br>
<div class=""><div class="h5">> On Mar 22, 2016, at 6:04 PM, Matthias Braun <<a href="mailto:mbraun@apple.com">mbraun@apple.com</a>> wrote:<br>
><br>
> No need to apologize this thread surely deserved some answers :)<br>
><br>
> From my perspective this project sounds doable. I would expect the register allocation parts to be not too hard: I imagine this being just distilling a new clobber regmask after allocating a function. I would expect the challenging (or annoying) part to get a machine module pass (or a similar mechanism to influence the order in which functions are processed) and a callgraph in the backend. So this might end up being more pass manager / infrastructure work than register allocation.<br>
><br>
> I'd be happy to answer detail questions or give guidance on the register allocation aspects.<br>
><br>
> - Matthias<br>
><br>
>> On Mar 22, 2016, at 5:27 PM, Sanjoy Das <<a href="mailto:sanjoy@playingwithpointers.com">sanjoy@playingwithpointers.com</a>> wrote:<br>
>><br>
>> Apologies: didn't notice how old this thread is before replying.<br>
>><br>
>> On Tue, Mar 22, 2016 at 5:24 PM, Sanjoy Das<br>
>> <<a href="mailto:sanjoy@playingwithpointers.com">sanjoy@playingwithpointers.com</a>> wrote:<br>
>>> Hi Vivek,<br>
>>><br>
>>> [+CC Matthias, Quentin]<br>
>>><br>
>>> Inter-procedural register allocation can be a big win, but my estimate<br>
>>> is that it will be challenging to complete within one summer unless<br>
>>> you're already familiar with LLVM's register allocator.<br>
>>><br>
>>> I've CC'ed some people who can give you some more detailed information.<br>
>>><br>
>>> -- Sanjoy<br>
>>><br>
>>><br>
>>> On Tue, Feb 9, 2016 at 9:17 PM, vivek pandya via llvm-dev<br>
>>> <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
>>>> Hello Community,<br>
>>>><br>
>>>> I would like to know status of the project and also importance of it. If the<br>
>>>> project is still open I would like to work on GSoC 2016 proposal for<br>
>>>> Inter-procedural Register Allocation, in that case please also suggest<br>
>>>> possible mentor or let me know if anyone is willing to be mentor for this.<br>
>>>><br>
>>>> Sincerely,<br>
>>>> Vivek Pandya<br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> LLVM Developers mailing list<br>
>>>> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
>>>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
>>>><br>
>>><br>
>>><br>
>>><br>
>>> --<br>
>>> Sanjoy Das<br>
>>> <a href="http://playingwithpointers.com" rel="noreferrer" target="_blank">http://playingwithpointers.com</a><br>
>><br>
>><br>
>><br>
>> --<br>
>> Sanjoy Das<br>
>> <a href="http://playingwithpointers.com" rel="noreferrer" target="_blank">http://playingwithpointers.com</a><br>
><br>
<br>
</div></div></blockquote></div><br></div></div>