about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbjorn3 <17426603+bjorn3@users.noreply.github.com>2022-11-28 13:03:47 +0000
committerbjorn3 <17426603+bjorn3@users.noreply.github.com>2022-11-28 13:03:47 +0000
commit052d5ccf5dc83db14917f4a52329a3bf2465af74 (patch)
tree06ce6195f2aea7185cddbe6dd5350df42255fd56
parent26d48c9a378f20f817e779328affc6c2643a3505 (diff)
downloadrust-052d5ccf5dc83db14917f4a52329a3bf2465af74.tar.gz
rust-052d5ccf5dc83db14917f4a52329a3bf2465af74.zip
Implement __isb for AArch64
This is necessary for the mutex implementation of libstd when there is
contention. Seems like I hadn't hit this before by sheer luck.
-rw-r--r--src/intrinsics/llvm_aarch64.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/intrinsics/llvm_aarch64.rs b/src/intrinsics/llvm_aarch64.rs
index 7959176ac85..b431158d269 100644
--- a/src/intrinsics/llvm_aarch64.rs
+++ b/src/intrinsics/llvm_aarch64.rs
@@ -16,6 +16,10 @@ pub(crate) fn codegen_aarch64_llvm_intrinsic_call<'tcx>(
     // llvm.aarch64.neon.sqshl.v*i*
 
     match intrinsic {
+        "llvm.aarch64.isb" => {
+            fx.bcx.ins().fence();
+        }
+
         _ if intrinsic.starts_with("llvm.aarch64.neon.abs.v") => {
             intrinsic_args!(fx, args => (a); intrinsic);