| Crates.io | llvm-mca |
| lib.rs | llvm-mca |
| version | 0.1.0 |
| created_at | 2024-11-07 22:52:58.021842+00 |
| updated_at | 2024-11-07 22:52:58.021842+00 |
| description | Macros for generating `llvm-mca` marker comments |
| homepage | https://github.com/philipturnbull/llvm-mca |
| repository | https://github.com/philipturnbull/llvm-mca |
| max_upload_size | |
| id | 1440399 |
| size | 5,097 |
llvm-mcaMacros to generate marker comments for LLVM's Machine Code Analyzer.
The llvm_mca_begin! and llvm_mca_end! macros will emit LLVM-MCA-BEGIN and LLVM-MCA-END markers, respectively.
If you want to automatically add markers to the beginning and end of a function, you can use the llvm-mca-macros crate instead.
For example, this:
use llvm_mca::{llvm_mca_begin, llvm_mca_end};
fn quadruple(x: u32) -> u32 {
llvm_mca_begin!();
let doubled = x + x;
llvm_mca_end!();
doubled + doubled
}
will generate the equivalent of:
fn quadruple(x: u32) -> u32 {
// emit `LLVM-MCA-BEGIN` marker
let doubled = x + x;
// emit `LLVM-MCA-END` marker
doubled + doubled
}
Regions can also be named. This:
use llvm_mca::{llvm_mca_begin, llvm_mca_end};
fn quadruple(x: u32) -> u32 {
llvm_mca_begin!("double");
let doubled = x + x;
llvm_mca_end!("double");
doubled + doubled
}
will generated the equivalent of:
fn quadruple(x: u32) -> u32 {
// emit `LLVM-MCA-BEGIN double` marker
let doubled = x + x;
// emit `LLVM-MCA-END double` marker
doubled + doubled
}
See the Using Markers to Analyze Specific Code Blocks section of the LLVM docs for details about naming regions and how to nest them.
You must set the RUSTFLAGS="--emit asm" option when building your project with cargo. For example:
RUSTFLAGS="--emit asm" cargo build --release
This will output assembly files in target/*/deps.