<div dir="ltr">I'm sorry, there are a couple of inaccuracies in the above e-mail:<div><br></div><div>1. This will be a minimal working example, not a conservatively correct implementation.</div><div>2. I also need to perform the following steps:</div><div><br></div><div>- Convert stub "condition" nodes to actual nodes with information.</div><div>- Perform equality saturation till fixpoint / timeout. </div><div>- Use some kind of profitability heuristic to pick final optimisations. </div><div><br></div><div>Once this is done, I can have it bail out on code it does not understand. Then, this is a "minimal working example" on which stuff can be built.</div><div><br></div><div>Thanks, and sorry for the rushed e-mail</div><div>~Siddharth</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, 18 Sep 2017 at 02:35 (IIIT) Siddharth Bhat <<a href="mailto:siddharth.bhat@research.iiit.ac.in">siddharth.bhat@research.iiit.ac.in</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello all,<div><br></div><div>I've been working on a prototype implementation of equality saturation on a personal branch: </div><div><br></div><div><a href="https://github.com/bollu/llvm/tree/1ab19bdb5eba00d1d508535758d700c1d60a3815" target="_blank">https://github.com/bollu/llvm/tree/1ab19bdb5eba00d1d508535758d700c1d60a3815</a><br><br></div><div>For those who have read the paper, I now create A-PEG nodes. I need to create PEG nodes from these.</div><div><br></div><div>There are four more "steps" before this is a minimal, conservatively correct implementation: </div><div><br></div><div>- Fill in the BasicBlock nodes with information from <font face="monospace">llvm::BasicBlock</font>.</div><div>- Implement the PEG -> CFG back-conversion (what the paper calls reversion).</div><div>- Figure out how to handle things like <font face="monospace">switch </font>and more complex terminators which are not directly handled by the original paper (as far as I have seen. Please correct me if am wrong).</div><div><br></div><div>This brings me to the question, how is this going to be upstreamed? Will I have to write an RFC that details what changes are proposed by this? </div><div><br></div><div>I'm new to adding a large "chunk" of changes, so any help is very appreciated!</div><div><br></div><div>Thanks,</div><div>~Siddharth</div></div><div dir="ltr">-- <br></div><div class="m_-5760513226889690326gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Sending this from my phone, please excuse any typos!</div></div></blockquote></div><div dir="ltr">-- <br></div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Sending this from my phone, please excuse any typos!</div></div>