{"id":13810761,"url":"https://github.com/google/EXEgesis","last_synced_at":"2025-05-14T15:31:10.966Z","repository":{"id":41329752,"uuid":"76657412","full_name":"google/EXEgesis","owner":"google","description":null,"archived":true,"fork":false,"pushed_at":"2023-04-10T00:27:11.000Z","size":1749,"stargazers_count":280,"open_issues_count":1,"forks_count":34,"subscribers_count":34,"default_branch":"master","last_synced_at":"2025-04-19T22:27:18.221Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-12-16T13:52:42.000Z","updated_at":"2024-12-01T22:23:03.000Z","dependencies_parsed_at":"2024-01-18T02:37:00.669Z","dependency_job_id":"086fb771-b4ac-45ff-b04c-abeac74a8b6a","html_url":"https://github.com/google/EXEgesis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2FEXEgesis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2FEXEgesis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2FEXEgesis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2FEXEgesis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/EXEgesis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254171718,"owners_count":22026500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T03:00:25.046Z","updated_at":"2025-05-14T15:31:05.952Z","avatar_url":"https://github.com/google.png","language":"C++","readme":"# State of the repository\n\n**As of January 2023, this project is no longer being maintained.** Many parts\nof this projects have open-source alternatives that are part of a bigger effort\nand that are actively maintained:\n\n-   [llvm-exegesis](https://llvm.org/docs/CommandGuide/llvm-exegesis.html)\n    allows analyzing individual instructions or snippets of assembly code.\n-   [llvm-mca](https://llvm.org/docs/CommandGuide/llvm-mca.html) is a CPU\n    pipeline simulation tool.\n-   [uops.info](https://uops.info/) provides detailed performance\n    characteristics and a machine-readable database of x86-64 instructions.\n\n# Goal\n\nGoogle's EXEgesis project aims to improve code generation in compilers, via:\n\n1.  Providing machine-readable lists of instructions for [hardware\n    vendors](https://en.wikipedia.org/wiki/List_of_computer_hardware_manufacturers#Central_processing_units_.28CPUs.29)\n    and [microarchitectures](https://en.wikipedia.org/wiki/Microarchitecture).\n2.  Providing tools for debugging the performance of code based on this data.\n\nFor a high-level overview of our efforts, see the\n[slides](https://goo.gl/koSKFK) for a tech talk about EXEgesis (July 2017).\n\nWe are providing tools to measure instruction latencies and\n[µOps](https://en.wikipedia.org/wiki/Micro-operation) scheduling. We have\ncontributed that part into LLVM as as the\n[`llvm-exegesis`](https://llvm.org/docs/CommandGuide/llvm-exegesis.html) tool.\n\n## Details\n\nThis repository provides a set of [tools](exegesis/tools/README.md) for\nextracting data about instructions and latencies from canonical sources and\nconverting them into machine-readable form. Some require parsing PDF files;\nothers are more straightforward.\n\nThe output data is available in the form of a [Protocol\nBuffer](https://developers.google.com/protocol-buffers/)\n[message](exegesis/proto/microarchitecture.proto).\n\nIt includes:\n\n-   A textual description. e.g. `Add with carry imm8 to AL.`\n-   The raw encoding. e.g. `14 ib` and equivalent LLVM mnemonic. e.g. `ADC8i8`\n\n## What's Next\n\n-   Intel x86-64 - [done](exegesis/x86/pdf/README.md)\n\n## Get Involved\n\n*   Issue tracker: https://github.com/google/EXEgesis/issues\n*   Mailing list: \u003cexegesis-discuss@googlegroups.com\u003e\n\nWe welcome patches -- see [CONTRIBUTING](CONTRIBUTING) for more information on\nhow to submit a patch.\n","funding_links":[],"categories":["Projects built with Bazel"],"sub_categories":["Google projects"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2FEXEgesis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2FEXEgesis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2FEXEgesis/lists"}