EXEgesis

  • 所有者: google/EXEgesis
  • 平台:
  • 許可證: Apache License 2.0
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Goal

Google's EXEgesis project aims to improve code generation in compilers, via:

  1. Providing machine-readable lists of instructions for hardware
    vendors

    and microarchitectures.
  2. Inferring latencies and
    µOps scheduling for each
    instruction/microarchitecture pair.
  3. 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).

Details

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.

When latencies and µOps scheduling are not available in the documentation, we
auto generate benchmarks to measure them.

The output data is available in the form of a Protocol
Buffer

message.

It includes:

  • A textual description. e.g. Add with carry imm8 to AL.
  • The raw encoding. e.g. 14 ib and equivalent LLVM mnemonic. e.g. ADC8i8
  • Per-microarchitecture instruction latencies. e.g. min_latency: 2, max_latency: 2
  • Per-microarchitecture instruction schedulings. e.g. Port 0 or 1 or 5 or 6
    • This identifies the execution
      units
      on which the µOps
      can be scheduled.
    • For example, here is the description of Intel Haswell
      Microarchitecture
      ,
      it contains 7 ports, the Add with carry imm8 to AL instruction above
      can execute on ports 0, 1, 5 or 6.

What's Next

  • Intel x86-64 - done
  • IBM POWER - underway
  • ARM Cortex - underway

Get Involved

We welcome patches -- see CONTRIBUTING for more information on
how to submit a patch.

主要指標

概覽
名稱與所有者google/EXEgesis
主編程語言C++
編程語言C++ (語言數: 3)
平台
許可證Apache License 2.0
所有者活动
創建於2016-12-16 13:52:42
推送於2023-04-10 00:27:11
最后一次提交2023-01-13 17:18:58
發布數0
用户参与
星數281
關注者數34
派生數34
提交數338
已啟用問題?
問題數9
打開的問題數0
拉請求數1
打開的拉請求數1
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?