This crate provides a simple platform agnostic wrapper for memory prefetching.
[dependencies]
mem_prefetch = "0.1"mem_prefetch::prefetch_read_data::<_, 3>(reference); // most local
mem_prefetch::prefetch_write_data::<_, 3>(reference); // most local
mem_prefetch::prefetch_read_data::<_, 2>(reference);
mem_prefetch::prefetch_write_data::<_, 2>(reference);
mem_prefetch::prefetch_read_data::<_, 1>(reference);
mem_prefetch::prefetch_write_data::<_, 1>(reference);
mem_prefetch::prefetch_read_data::<_, 0>(reference); // least local
mem_prefetch::prefetch_write_data::<_, 0>(reference); // least local
// Or raw ptr variants:
unsafe {
mem_prefetch::prefetch_read_data_raw::<_, 0>(ptr);
mem_prefetch::prefetch_write_data_raw::<_, 0>(ptr);
}fallback: Use fallbackptr::read_volatilefor prefetching if no prefetch instruction is available. (Enabled by default).nightly: Use llvm intrinsics fromcore_intrinsicsfor prefetching.
- read/write variants map to same instructions on
x86.