<div dir="ltr">Hi,<div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 5, 2017 at 3:57 PM, (IIIT) Siddharth Bhat via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hello all,<div><br><div>I've seen some discussion that InstCombine is "too general" and that llvm should implement a proper graph rewrite mechanism:</div><div><br></div><div>Link to llvm-dev discussion about this: <a href="http://lists.llvm.org/pipermail/llvm-dev/2017-May/113219.html" target="_blank">http://lists.llvm.org/<wbr>pipermail/llvm-dev/2017-May/<wbr>113219.html</a>,</div><div>Link to review where this came up (and I first heard about it): <a href="https://reviews.llvm.org/D37195" target="_blank">https://reviews.llvm.org/<wbr>D37195</a>.</div><div><br></div><div>I wanted to understand what the current issues with InstCombine are, and if a graph rewriter prototype is something people are interested in. I find the idea appealing, from what little I know it, so I'd be interested in hacking something up.</div><div><br></div><div>What would such a framework look like? Is there past literature on the subject? From what I know, many functional compilers using combinator based compilation were graph rewriting. Is there other prior art?</div><div><br></div><div>Also, there is the idea of Equality Saturation (<a href="http://www.cs.cornell.edu/~ross/publications/eqsat/" target="_blank">http://www.cs.cornell.edu/~<wbr>ross/publications/eqsat/</a>) that I found out about recently. Could this be used to augment the InstCombine infrastructure?<br></div></div></div></blockquote><div>In addition of augmenting InstCombine, we may also use <span style="font-size:12.8px">Equality Saturation to enhance/simplify the SCEV canonicalization process in the ScalarEvolution pass, as well as the peephole optimizations in LLVM backends.</span></div><div><span style="font-size:12.8px">So we may need a generic engine.</span></div><div> </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div></div><div><br></div><div>Thanks,</div><div>~Siddharth</div><span class="gmail-HOEnZb"><font color="#888888"><div><br></div></font></span></div></div><span class="gmail-HOEnZb"><font color="#888888"><div dir="ltr">-- <br></div><div class="gmail-m_-5188042245633673056gmail_signature"><div dir="ltr">Sending this from my phone, please excuse any typos!</div></div>
</font></span><br>______________________________<wbr>_________________<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/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div></div>