<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">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="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Sending this from my phone, please excuse any typos!</div></div>