From a80f5272c6b4a29f4f6479d63a5753ed9b697d8c Mon Sep 17 00:00:00 2001 From: LevitatingLion Date: Fri, 24 Feb 2023 02:59:58 +0100 Subject: [PATCH] Add shim for `llvm.arm.hint` This shim is required for `core::hint::spin_loop` on `arm` targets --- src/tools/miri/src/shims/foreign_items.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 _ =>