#[inline(always)]
#[allow(unused_variables)]
pub(crate) fn prefetch_read<const OFFSETS_64B: usize, T>(ptr: *const T) {
for i in 0..=OFFSETS_64B {
let ptr = unsafe { (ptr as *const u8).add(i * 64) };
#[cfg(target_arch = "x86_64")]
unsafe {
core::arch::x86_64::_mm_prefetch::<{ core::arch::x86_64::_MM_HINT_T0 }>(
ptr as *const i8,
);
}
#[cfg(target_arch = "aarch64")]
unsafe {
core::arch::asm!(
"prfm pldl1keep, [{0}]",
in(reg) ptr,
options(nostack, preserves_flags),
);
}
#[cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))]
let _ = ptr;
}
}