<div style><font face="arial, sans-serif">Hi all,</font><div class="im"><div><font face="arial, sans-serif">   My name is Qingrui Liu, a student at Sun Yat-sen University, China. I have been working on high level synthesis project which is implemented as a back-end of LLVM, in the last two years.When I want to use Polly to generate parallel LLVM-IR from Polly-IR for me as input to my high level synthesis too</font><font face="arial, helvetica, sans-serif">ls at the begining of this year, I found that</font><font face="arial, helvetica, sans-serif"> Polly's back-end is not flexible and modular enough to allow user adding new platform support. So I am going to improve the existing back-end to an adaptive and modular back-end which will unleash the power of Polly to other projects. </font></div>
<div><font face="arial, helvetica, sans-serif"><br></font></div></div></div><div class="im" style><div><div><font face="arial, helvetica, sans-serif">To be short, I plan to implement my proposal in steps as follows:</font></div>
</div><div><font face="arial, helvetica, sans-serif">1. refactor the exis</font><font face="arial, helvetica, sans-serif">ting back-end to a preliminary modular back-end.<br>2. Add A CodeGen adapter, abstract away the detail of CLAst.<div>
3. Implementation of Specific code generation class to the new back-end. In this phase, I am going to implement a SIMD code generation class.<br><br>An ultimate construction of the new backend will be like the figure below:</div>
</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div></div><div style>[Original Polly codegeneration pass]   [Click codegeneration[1]]  [whole function vectorize codegeneration[2]], ....</div><div class="im" style>
<div style="font-family:arial,sans-serif">                                              \                                |                                /</div><div style="font-family:arial,sans-serif">                                                  \                            |                           / </div>
<div style="font-family:arial,sans-serif">                                                     \                         |                        /</div><div style="font-family:arial,sans-serif">                                                         \                     |                    /</div>
<div style="font-family:arial,sans-serif">                                                             \                 |                 /</div><div style="font-family:arial,sans-serif">                                                                  CodeGen adapter</div>
<div style="font-family:arial,sans-serif">                                                                        /              \</div><div style="font-family:arial,sans-serif">                                                                     /                    \</div>
<div style="font-family:arial,sans-serif">                                                                  /                          \</div><div style="font-family:arial,sans-serif">                                           Cloog AST infrastructure          XXX  AST infrastructure ...</div>
<div style="font-family:arial,sans-serif">                                                               \                               /</div><div style="font-family:arial,sans-serif">                                                                  \                         /</div>
<div style="font-family:arial,sans-serif">                                                                     \                   /</div><div style="font-family:arial,sans-serif">                                                                     SCOP (Polly IR)</div>
<div style="font-family:arial,sans-serif"><br></div><div><div style="font-family:arial,sans-serif"><font face="arial, helvetica, sans-serif">After the new backend is done, I think it will easy for other developers to implement a code generation pass which will meet the requirements of their platforms or LLVM back-ends. So the optimized LLVM-IR could be passed to the ordinary LLVM back-ends, such as the high level synthesis back-end I mentioned above. It will be a great help </font><span style="font-family:arial,helvetica,sans-serif">to</span><span style="font-family:arial,helvetica,sans-serif"> both the developers and LLVM.</span></div>
<div style="font-family:arial,sans-serif"><font face="arial, helvetica, sans-serif"><br></font></div></div><div style="font-family:arial,sans-serif"><div><div><span style="font-family:arial,helvetica,sans-serif">Tobias Grosser and </span><font face="arial, helvetica, sans-serif">Ether, who are the contributors of Polly, have assented to be my mentor, If my proposal is approved. Is this idea good enough for the Google summer of code? If it is, I am going to write a proposal for it. Any suggestion is appreciated.</font></div>
<font face="arial, helvetica, sans-serif"><br>Sincerely,<br>Qingrui Liu</font>  </div></div><div style="font-family:arial,sans-serif"><br></div><div style="font-family:arial,sans-serif">[1]<a href="http://supertech.csail.mit.edu/cilk/">http://supertech.csail.mit.edu/cilk/</a></div>
<div style="font-family:arial,sans-serif">[2]<a href="http://www.cdl.uni-saarland.de/projects/wfv/">http://www.cdl.uni-saarland.de/projects/wfv/</a></div></div>