From 51df7aabbe3140ccca1f63617d7cfdb883509239 Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Tue, 19 Aug 2025 21:12:53 +0200 Subject: add a fallback implementation for the `prefetch_*` intrinsics The fallback is to just ignore the arguments. That is a valid implementation because this intrinsic is just a hint. I also added `miri::intrinsic_fallback_is_spec` annotation, so that miri now supports these operations. A prefetch intrinsic call is valid on any pointer. --- src/tools/miri/tests/pass/prefetch.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/tools/miri/tests/pass/prefetch.rs (limited to 'src') diff --git a/src/tools/miri/tests/pass/prefetch.rs b/src/tools/miri/tests/pass/prefetch.rs new file mode 100644 index 00000000000..09352695989 --- /dev/null +++ b/src/tools/miri/tests/pass/prefetch.rs @@ -0,0 +1,23 @@ +#![feature(core_intrinsics)] + +fn main() { + static X: [u8; 8] = [0; 8]; + + unsafe { + ::std::intrinsics::prefetch_read_data(::std::ptr::null::(), 1); + ::std::intrinsics::prefetch_read_data(::std::ptr::dangling::(), 2); + ::std::intrinsics::prefetch_read_data(X.as_ptr(), 3); + + ::std::intrinsics::prefetch_write_data(::std::ptr::null::(), 1); + ::std::intrinsics::prefetch_write_data(::std::ptr::dangling::(), 2); + ::std::intrinsics::prefetch_write_data(X.as_ptr(), 3); + + ::std::intrinsics::prefetch_read_instruction(::std::ptr::null::(), 1); + ::std::intrinsics::prefetch_read_instruction(::std::ptr::dangling::(), 2); + ::std::intrinsics::prefetch_read_instruction(X.as_ptr(), 3); + + ::std::intrinsics::prefetch_write_instruction(::std::ptr::null::(), 1); + ::std::intrinsics::prefetch_write_instruction(::std::ptr::dangling::(), 2); + ::std::intrinsics::prefetch_write_instruction(X.as_ptr(), 3); + } +} -- cgit 1.4.1-3-g733a5