souper
x86-sat
souper | x86-sat | |
---|---|---|
12 | 5 | |
2,073 | 311 | |
0.3% | - | |
3.4 | 10.0 | |
28 days ago | over 2 years ago | |
C++ | Python | |
Apache License 2.0 | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
souper
-
Original Age of Empires 2 dev talks about its usage of assembly code
https://github.com/google/souper
It looks like it only supports Linux and macOS - no Windows, but no other things too like mobile.
It seems it exists for ten years, I wonder what optimizations aren't still picked by the recent compilers.
- Minotaur: A SIMD-Oriented Synthesizing Superoptimizer
-
My First Superoptimizer
The pruning part can do a lot of heavy lifting to make it a practical tool.
Related: I work on Souper (https://github.com/google/souper).
Feel free to reach out if anyone has questions!
-
Superoptimisation
Compile to LLVM IR and you can try Souper: https://github.com/google/souper
-
Ryan Levick: The new pass manager in LLVM 13 (now in nightly) leads to significantly better compile times..
These exist, they are called superoptimizers. The most known superoptimizer for LLVM is caller SOUPER
- A Superoptimizer for LLVM IR
- A superoptimizer for LLVM IR
-
Software Verification and Analysis Using Z3
Google's one step ahead of you there :)
https://github.com/google/souper
x86-sat
-
My First Superoptimizer
Better than brute force is using a model of your instruction set (x86 start here [1]), then using something like Z3 [] to find solutions. Here's a paper doing the same [2]. With these approaches you can get vastly bigger pieces of code generated than brute force, and with significantly less hand heuristic tuning effort (which likely still loses out to current solvers).
[1] https://github.com/zwegner/x86-sat
[2] https://people.cs.umass.edu/~aabhinav/Publications/Unbounded...
- Basic SAT model of x86 instructions using Z3, autogenerated from Intel docs
What are some alternatives?
lean4 - Lean 4 programming language and theorem prover
seL4 - The seL4 microkernel
rust - Empowering everyone to build reliable and efficient software.
z3_tutorial - Jupyter notebooks for tutorial on the Z3 SMT solver
minotaur - A description of Minotaur can be found in https://arxiv.org/abs/2306.00229.