diff options
| author | Folkert de Vries <folkert@folkertdev.nl> | 2025-08-19 21:12:53 +0200 |
|---|---|---|
| committer | Folkert de Vries <folkert@folkertdev.nl> | 2025-08-19 21:17:49 +0200 |
| commit | 51df7aabbe3140ccca1f63617d7cfdb883509239 (patch) | |
| tree | 7fe8037dbe292e1776ffe01e0a55996765225558 /src | |
| parent | 16ad385579cebb6f7d53367c552661b6b51a4a02 (diff) | |
| download | rust-51df7aabbe3140ccca1f63617d7cfdb883509239.tar.gz rust-51df7aabbe3140ccca1f63617d7cfdb883509239.zip | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/tools/miri/tests/pass/prefetch.rs | 23 |
1 files changed, 23 insertions, 0 deletions
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::<u8>(), 1); + ::std::intrinsics::prefetch_read_data(::std::ptr::dangling::<u8>(), 2); + ::std::intrinsics::prefetch_read_data(X.as_ptr(), 3); + + ::std::intrinsics::prefetch_write_data(::std::ptr::null::<u8>(), 1); + ::std::intrinsics::prefetch_write_data(::std::ptr::dangling::<u8>(), 2); + ::std::intrinsics::prefetch_write_data(X.as_ptr(), 3); + + ::std::intrinsics::prefetch_read_instruction(::std::ptr::null::<u8>(), 1); + ::std::intrinsics::prefetch_read_instruction(::std::ptr::dangling::<u8>(), 2); + ::std::intrinsics::prefetch_read_instruction(X.as_ptr(), 3); + + ::std::intrinsics::prefetch_write_instruction(::std::ptr::null::<u8>(), 1); + ::std::intrinsics::prefetch_write_instruction(::std::ptr::dangling::<u8>(), 2); + ::std::intrinsics::prefetch_write_instruction(X.as_ptr(), 3); + } +} |
