core/stdarch/crates/core_arch/src/aarch64/
prefetch.rs1#[cfg(test)]
2use stdarch_test::assert_instr;
3
4extern "unadjusted" {
5 #[link_name = "llvm.prefetch"]
6 fn prefetch(p: *const i8, rw: i32, loc: i32, ty: i32);
7}
8
9#[unstable(feature = "stdarch_aarch64_prefetch", issue = "117217")]
11pub const _PREFETCH_READ: i32 = 0;
12
13#[unstable(feature = "stdarch_aarch64_prefetch", issue = "117217")]
15pub const _PREFETCH_WRITE: i32 = 1;
16
17#[unstable(feature = "stdarch_aarch64_prefetch", issue = "117217")]
19pub const _PREFETCH_LOCALITY0: i32 = 0;
20
21#[unstable(feature = "stdarch_aarch64_prefetch", issue = "117217")]
23pub const _PREFETCH_LOCALITY1: i32 = 1;
24
25#[unstable(feature = "stdarch_aarch64_prefetch", issue = "117217")]
27pub const _PREFETCH_LOCALITY2: i32 = 2;
28
29#[unstable(feature = "stdarch_aarch64_prefetch", issue = "117217")]
31pub const _PREFETCH_LOCALITY3: i32 = 3;
32
33#[inline(always)]
64#[cfg_attr(test, assert_instr("prfm pldl1strm", RW = _PREFETCH_READ, LOCALITY = _PREFETCH_LOCALITY0))]
65#[cfg_attr(test, assert_instr("prfm pldl3keep", RW = _PREFETCH_READ, LOCALITY = _PREFETCH_LOCALITY1))]
66#[cfg_attr(test, assert_instr("prfm pldl2keep", RW = _PREFETCH_READ, LOCALITY = _PREFETCH_LOCALITY2))]
67#[cfg_attr(test, assert_instr("prfm pldl1keep", RW = _PREFETCH_READ, LOCALITY = _PREFETCH_LOCALITY3))]
68#[cfg_attr(test, assert_instr("prfm pstl1strm", RW = _PREFETCH_WRITE, LOCALITY = _PREFETCH_LOCALITY0))]
69#[cfg_attr(test, assert_instr("prfm pstl3keep", RW = _PREFETCH_WRITE, LOCALITY = _PREFETCH_LOCALITY1))]
70#[cfg_attr(test, assert_instr("prfm pstl2keep", RW = _PREFETCH_WRITE, LOCALITY = _PREFETCH_LOCALITY2))]
71#[cfg_attr(test, assert_instr("prfm pstl1keep", RW = _PREFETCH_WRITE, LOCALITY = _PREFETCH_LOCALITY3))]
72#[rustc_legacy_const_generics(1, 2)]
73#[unstable(feature = "stdarch_aarch64_prefetch", issue = "117217")]
74pub unsafe fn _prefetch<const RW: i32, const LOCALITY: i32>(p: *const i8) {
76 static_assert_uimm_bits!(RW, 1);
78 static_assert_uimm_bits!(LOCALITY, 2);
79 prefetch(p, RW, LOCALITY, 1);
80}