diff options
| author | LevitatingLion <levitatinglion@web.de> | 2023-02-24 02:59:58 +0100 |
|---|---|---|
| committer | LevitatingLion <levitatinglion@web.de> | 2023-02-24 02:59:58 +0100 |
| commit | a80f5272c6b4a29f4f6479d63a5753ed9b697d8c (patch) | |
| tree | aaa5bb117cc48c93bba24e5095bb7df3fdf7b164 | |
| parent | 2a979f8ba02f0c60e327c9764ea27837ba4bb028 (diff) | |
| download | rust-a80f5272c6b4a29f4f6479d63a5753ed9b697d8c.tar.gz rust-a80f5272c6b4a29f4f6479d63a5753ed9b697d8c.zip | |
Add shim for `llvm.arm.hint`
This shim is required for `core::hint::spin_loop` on `arm` targets
| -rw-r--r-- | src/tools/miri/src/shims/foreign_items.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/tools/miri/src/shims/foreign_items.rs b/src/tools/miri/src/shims/foreign_items.rs index 2d9eb37a258..03275ed4ed1 100644 --- a/src/tools/miri/src/shims/foreign_items.rs +++ b/src/tools/miri/src/shims/foreign_items.rs @@ -885,6 +885,19 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> { } } } + "llvm.arm.hint" if this.tcx.sess.target.arch == "arm" => { + let [arg] = this.check_shim(abi, Abi::Unadjusted, link_name, args)?; + let arg = this.read_scalar(arg)?.to_i32()?; + match arg { + // YIELD + 1 => { + this.yield_active_thread(); + } + _ => { + throw_unsup_format!("unsupported llvm.arm.hint argument {}", arg); + } + } + } // Platform-specific shims _ => |
