Souper – A Superoptimizer for LLVM IR
github.com
github.com
http://blog.regehr.org/archives/1252
Here's a talk I gave at the University of Washington last winter (before Souper did synthesis): https://www.youtube.com/watch?v=Ux0YnVEaI6A
Recently we've been teaching Souper to use dataflow facts such as LLVM's known bits and demanded bits. Perhaps interestingly, Souper can also teach LLVM how to compute these facts more precisely: http://lists.llvm.org/pipermail/llvm-dev/2015-September/089904.html
One really common question about Souper is "why operate on LLVM IR instead of instructions?" One of the main answers is "so that we can interact with dataflow analyses." This isn't something that previous superoptimizers have done. It seems to be working out really well.Seems weird to have this type of tool as a local tool rather than a cloud based tool.
It would be neat to have a service you can query with a snippet of IR, and it gives you back an optimal version of it. One can continually increase the side of these snippets as you get more cloud resources.
Having statistics on which patterns are common, even if they are not optimized would be really interesting. You could then use these statistics to target future optimization research.
http://llvm.org/devmtg/2011-11/Sands_Super-optimizingLLVMIR....
>Alternatively, you may immediately let Souper modify the bitcode and let it apply the missed optimization opportunties by using the Souper llvm opt pass.
So it seems like a benchmark of the program before and after this process would be relevant.
http://theory.stanford.edu/~aiken/publications/papers/asplos...
They had to restrict themselves to instruction sequences of length 3 due to limited resources, and say that to go beyond instruction sequences of length 4 they would need a better approach.
(both are brute force though, not solver-based)
Modeling is not even the hard part, it's modeling in a way that doesn't take till the heat death of the sun to solve ;-)