mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-17 05:25:37 +03:00
Rollup merge of #38959 - Amanieu:atomic128, r=alexcrichton
Add 128-bit atomics This is currently only supported on AArch64 since that is the only target which unconditionally supports 128-bit atomic operations. cc #35118
This commit is contained in:
@@ -1318,6 +1318,24 @@ pub fn fetch_xor(&self, val: $int_type, order: Ordering) -> $int_type {
|
||||
unstable(feature = "integer_atomics", issue = "32976"),
|
||||
u64 AtomicU64 ATOMIC_U64_INIT
|
||||
}
|
||||
#[cfg(not(stage0))]
|
||||
#[cfg(target_has_atomic = "128")]
|
||||
atomic_int! {
|
||||
unstable(feature = "i128", issue = "35118"),
|
||||
unstable(feature = "i128", issue = "35118"),
|
||||
unstable(feature = "i128", issue = "35118"),
|
||||
unstable(feature = "i128", issue = "35118"),
|
||||
i128 AtomicI128 ATOMIC_I128_INIT
|
||||
}
|
||||
#[cfg(not(stage0))]
|
||||
#[cfg(target_has_atomic = "128")]
|
||||
atomic_int! {
|
||||
unstable(feature = "i128", issue = "35118"),
|
||||
unstable(feature = "i128", issue = "35118"),
|
||||
unstable(feature = "i128", issue = "35118"),
|
||||
unstable(feature = "i128", issue = "35118"),
|
||||
u128 AtomicU128 ATOMIC_U128_INIT
|
||||
}
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
atomic_int!{
|
||||
stable(feature = "rust1", since = "1.0.0"),
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![feature(cfg_target_has_atomic, no_core, intrinsics, lang_items)]
|
||||
#![feature(cfg_target_has_atomic, no_core, intrinsics, lang_items, i128_type)]
|
||||
#![crate_type="rlib"]
|
||||
#![no_core]
|
||||
|
||||
@@ -54,6 +54,14 @@ pub unsafe fn atomic_u64(x: *mut u64) {
|
||||
pub unsafe fn atomic_i64(x: *mut i64) {
|
||||
atomic_xadd(x, 1);
|
||||
}
|
||||
#[cfg(target_has_atomic = "128")]
|
||||
pub unsafe fn atomic_u128(x: *mut u128) {
|
||||
atomic_xadd(x, 1);
|
||||
}
|
||||
#[cfg(target_has_atomic = "128")]
|
||||
pub unsafe fn atomic_i128(x: *mut i128) {
|
||||
atomic_xadd(x, 1);
|
||||
}
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
pub unsafe fn atomic_usize(x: *mut usize) {
|
||||
atomic_xadd(x, 1);
|
||||
|
||||
Reference in New Issue
Block a user