As of January 2023, this project is no longer being maintained. Many parts of this projects have open-source alternatives that are part of a bigger effort and that are actively maintained:
- llvm-exegesis allows analyzing individual instructions or snippets of assembly code.
- llvm-mca is a CPU pipeline simulation tool.
- uops.info provides detailed performance characteristics and a machine-readable database of x86-64 instructions.
Google's EXEgesis project aims to improve code generation in compilers, via:
- Providing machine-readable lists of instructions for hardware vendors and microarchitectures.
- Providing tools for debugging the performance of code based on this data.
For a high-level overview of our efforts, see the slides for a tech talk about EXEgesis (July 2017).
This repository provides a set of tools for extracting data about instructions and latencies from canonical sources and converting them into machine-readable form. Some require parsing PDF files; others are more straightforward.
- A textual description. e.g.
Add with carry imm8 to AL.
- The raw encoding. e.g.
14 iband equivalent LLVM mnemonic. e.g.
- Intel x86-64 - done
- Issue tracker: https://github.com/google/EXEgesis/issues
- Mailing list: firstname.lastname@example.org
We welcome patches -- see CONTRIBUTING for more information on how to submit a patch.