[aarch64] add target feature outline-atomics
Enable outline-atomics by default as enabled in clang by the following commit https://reviews.llvm.org/rGc5e7e649d537067dec7111f3de1430d0fc8a4d11 Performance improves by several orders of magnitude when using the LSE instructions instead of the ARMv8.0 compatible load/store exclusive instructions. Tested on Graviton2 aarch64-linux with x.py build && x.py install && x.py test
This commit is contained in:
parent
3e8f32e1c5
commit
0f9f241aac
2 changed files with 21 additions and 0 deletions
16
src/test/assembly/asm/aarch64-outline-atomics.rs
Normal file
16
src/test/assembly/asm/aarch64-outline-atomics.rs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
// min-llvm-version: 12.0
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: -O
|
||||
// compile-flags: --target aarch64-unknown-linux-gnu
|
||||
// needs-llvm-components: aarch64
|
||||
// only-aarch64
|
||||
|
||||
#![crate_type = "rlib"]
|
||||
|
||||
use std::sync::atomic::{AtomicI32, Ordering::*};
|
||||
|
||||
pub fn compare_exchange(a: &AtomicI32) {
|
||||
// On AArch64 LLVM should outline atomic operations.
|
||||
// CHECK: __aarch64_cas4_relax
|
||||
let _ = a.compare_exchange(0, 10, Relaxed, Relaxed);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue