aboutsummaryrefslogtreecommitdiff
path: root/vendor/portable-atomic/src/imp/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/portable-atomic/src/imp/mod.rs')
-rw-r--r--vendor/portable-atomic/src/imp/mod.rs449
1 files changed, 0 insertions, 449 deletions
diff --git a/vendor/portable-atomic/src/imp/mod.rs b/vendor/portable-atomic/src/imp/mod.rs
deleted file mode 100644
index cea71eb..0000000
--- a/vendor/portable-atomic/src/imp/mod.rs
+++ /dev/null
@@ -1,449 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0 OR MIT
-
-// -----------------------------------------------------------------------------
-// Lock-free implementations
-
-#[cfg(not(any(
- all(
- portable_atomic_no_atomic_load_store,
- not(all(target_arch = "bpf", not(feature = "critical-section"))),
- ),
- portable_atomic_unsafe_assume_single_core,
- target_arch = "avr",
- target_arch = "msp430",
-)))]
-#[cfg_attr(
- portable_atomic_no_cfg_target_has_atomic,
- cfg(not(all(
- any(target_arch = "riscv32", target_arch = "riscv64", feature = "critical-section"),
- portable_atomic_no_atomic_cas,
- )))
-)]
-#[cfg_attr(
- not(portable_atomic_no_cfg_target_has_atomic),
- cfg(not(all(
- any(target_arch = "riscv32", target_arch = "riscv64", feature = "critical-section"),
- not(target_has_atomic = "ptr"),
- )))
-)]
-mod core_atomic;
-
-// aarch64 128-bit atomics
-#[cfg(all(
- target_arch = "aarch64",
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
-))]
-// Use intrinsics.rs on Miri and Sanitizer that do not support inline assembly.
-#[cfg_attr(
- all(any(miri, portable_atomic_sanitize_thread), portable_atomic_new_atomic_intrinsics),
- path = "atomic128/intrinsics.rs"
-)]
-#[cfg_attr(
- not(all(any(miri, portable_atomic_sanitize_thread), portable_atomic_new_atomic_intrinsics)),
- path = "atomic128/aarch64.rs"
-)]
-mod aarch64;
-
-// x86_64 128-bit atomics
-#[cfg(all(
- target_arch = "x86_64",
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
- any(
- target_feature = "cmpxchg16b",
- portable_atomic_target_feature = "cmpxchg16b",
- all(
- feature = "fallback",
- not(portable_atomic_no_cmpxchg16b_target_feature),
- not(portable_atomic_no_outline_atomics),
- not(any(target_env = "sgx", miri)),
- ),
- ),
-))]
-// Use intrinsics.rs on Miri and Sanitizer that do not support inline assembly.
-#[cfg_attr(any(miri, portable_atomic_sanitize_thread), path = "atomic128/intrinsics.rs")]
-#[cfg_attr(not(any(miri, portable_atomic_sanitize_thread)), path = "atomic128/x86_64.rs")]
-mod x86_64;
-
-// powerpc64 128-bit atomics
-#[cfg(all(
- target_arch = "powerpc64",
- portable_atomic_unstable_asm_experimental_arch,
- any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- all(
- feature = "fallback",
- not(portable_atomic_no_outline_atomics),
- any(test, portable_atomic_outline_atomics), // TODO(powerpc64): currently disabled by default
- any(
- all(
- target_os = "linux",
- any(
- target_env = "gnu",
- all(
- any(target_env = "musl", target_env = "ohos"),
- not(target_feature = "crt-static"),
- ),
- portable_atomic_outline_atomics,
- ),
- ),
- target_os = "android",
- target_os = "freebsd",
- ),
- not(any(miri, portable_atomic_sanitize_thread)),
- ),
- ),
-))]
-// Use intrinsics.rs on Miri and Sanitizer that do not support inline assembly.
-#[cfg_attr(
- all(any(miri, portable_atomic_sanitize_thread), portable_atomic_llvm_15),
- path = "atomic128/intrinsics.rs"
-)]
-#[cfg_attr(
- not(all(any(miri, portable_atomic_sanitize_thread), portable_atomic_llvm_15)),
- path = "atomic128/powerpc64.rs"
-)]
-mod powerpc64;
-
-// s390x 128-bit atomics
-#[cfg(all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch))]
-// Use intrinsics.rs on Miri and Sanitizer that do not support inline assembly.
-#[cfg_attr(any(miri, portable_atomic_sanitize_thread), path = "atomic128/intrinsics.rs")]
-#[cfg_attr(not(any(miri, portable_atomic_sanitize_thread)), path = "atomic128/s390x.rs")]
-mod s390x;
-
-// pre-v6 ARM Linux 64-bit atomics
-#[cfg(feature = "fallback")]
-// Miri and Sanitizer do not support inline assembly.
-#[cfg(all(
- target_arch = "arm",
- not(any(miri, portable_atomic_sanitize_thread)),
- not(portable_atomic_no_asm),
- any(target_os = "linux", target_os = "android"),
- not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
- not(portable_atomic_no_outline_atomics),
-))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_64))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "64")))]
-mod arm_linux;
-
-// MSP430 atomics
-#[cfg(target_arch = "msp430")]
-pub(crate) mod msp430;
-
-// atomic load/store for RISC-V without A-extension
-#[cfg(any(test, not(feature = "critical-section")))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(any(test, portable_atomic_no_atomic_cas)))]
-#[cfg_attr(
- not(portable_atomic_no_cfg_target_has_atomic),
- cfg(any(test, not(target_has_atomic = "ptr")))
-)]
-#[cfg(any(target_arch = "riscv32", target_arch = "riscv64"))]
-mod riscv;
-
-// x86-specific optimizations
-// Miri and Sanitizer do not support inline assembly.
-#[cfg(all(
- any(target_arch = "x86", target_arch = "x86_64"),
- not(any(miri, portable_atomic_sanitize_thread)),
- not(portable_atomic_no_asm),
-))]
-mod x86;
-
-// -----------------------------------------------------------------------------
-// Lock-based fallback implementations
-
-#[cfg(feature = "fallback")]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(not(portable_atomic_no_atomic_cas)))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(target_has_atomic = "ptr"))]
-#[cfg(any(
- test,
- not(any(
- all(
- target_arch = "aarch64",
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
- ),
- all(
- target_arch = "x86_64",
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
- any(target_feature = "cmpxchg16b", portable_atomic_target_feature = "cmpxchg16b"),
- ),
- all(
- target_arch = "powerpc64",
- portable_atomic_unstable_asm_experimental_arch,
- any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- ),
- ),
- all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch),
- ))
-))]
-mod fallback;
-
-// -----------------------------------------------------------------------------
-// Critical section based fallback implementations
-
-// On AVR, we always use critical section based fallback implementation.
-// AVR can be safely assumed to be single-core, so this is sound.
-// https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/AVR/AVRExpandPseudoInsts.cpp#L1074
-// MSP430 as well.
-#[cfg(any(
- all(test, target_os = "none"),
- portable_atomic_unsafe_assume_single_core,
- feature = "critical-section",
- target_arch = "avr",
- target_arch = "msp430",
-))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(any(test, portable_atomic_no_atomic_cas)))]
-#[cfg_attr(
- not(portable_atomic_no_cfg_target_has_atomic),
- cfg(any(test, not(target_has_atomic = "ptr")))
-)]
-#[cfg(any(
- target_arch = "arm",
- target_arch = "avr",
- target_arch = "msp430",
- target_arch = "riscv32",
- target_arch = "riscv64",
- target_arch = "xtensa",
- feature = "critical-section",
-))]
-mod interrupt;
-
-// -----------------------------------------------------------------------------
-// Atomic float implementations
-
-#[cfg(feature = "float")]
-pub(crate) mod float;
-
-// -----------------------------------------------------------------------------
-
-#[cfg(not(any(
- portable_atomic_no_atomic_load_store,
- portable_atomic_unsafe_assume_single_core,
- target_arch = "avr",
- target_arch = "msp430",
-)))]
-#[cfg_attr(
- portable_atomic_no_cfg_target_has_atomic,
- cfg(not(all(
- any(target_arch = "riscv32", target_arch = "riscv64", feature = "critical-section"),
- portable_atomic_no_atomic_cas,
- )))
-)]
-#[cfg_attr(
- not(portable_atomic_no_cfg_target_has_atomic),
- cfg(not(all(
- any(target_arch = "riscv32", target_arch = "riscv64", feature = "critical-section"),
- not(target_has_atomic = "ptr"),
- )))
-)]
-items! {
- pub(crate) use self::core_atomic::{
- AtomicI16, AtomicI32, AtomicI8, AtomicIsize, AtomicPtr, AtomicU16, AtomicU32, AtomicU8,
- AtomicUsize,
- };
- #[cfg_attr(
- portable_atomic_no_cfg_target_has_atomic,
- cfg(any(
- not(portable_atomic_no_atomic_64),
- not(any(target_pointer_width = "16", target_pointer_width = "32")),
- ))
- )]
- #[cfg_attr(
- not(portable_atomic_no_cfg_target_has_atomic),
- cfg(any(
- target_has_atomic = "64",
- not(any(target_pointer_width = "16", target_pointer_width = "32")),
- ))
- )]
- pub(crate) use self::core_atomic::{AtomicI64, AtomicU64};
-}
-// bpf
-#[cfg(all(
- target_arch = "bpf",
- portable_atomic_no_atomic_load_store,
- not(feature = "critical-section"),
-))]
-pub(crate) use self::core_atomic::{AtomicI64, AtomicIsize, AtomicPtr, AtomicU64, AtomicUsize};
-
-// RISC-V without A-extension & !(assume single core | critical section)
-#[cfg(not(any(portable_atomic_unsafe_assume_single_core, feature = "critical-section")))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_cas))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "ptr")))]
-#[cfg(any(target_arch = "riscv32", target_arch = "riscv64"))]
-items! {
- pub(crate) use self::riscv::{
- AtomicI16, AtomicI32, AtomicI8, AtomicIsize, AtomicPtr, AtomicU16, AtomicU32, AtomicU8,
- AtomicUsize,
- };
- #[cfg(target_arch = "riscv64")]
- pub(crate) use self::riscv::{AtomicI64, AtomicU64};
-}
-
-// no core atomic CAS & (assume single core | critical section) => critical section based fallback
-#[cfg(any(
- portable_atomic_unsafe_assume_single_core,
- feature = "critical-section",
- target_arch = "avr",
- target_arch = "msp430",
-))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_cas))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "ptr")))]
-items! {
- pub(crate) use self::interrupt::{
- AtomicI16, AtomicI8, AtomicIsize, AtomicPtr, AtomicU16, AtomicU8, AtomicUsize,
- };
- #[cfg(any(not(target_pointer_width = "16"), feature = "fallback"))]
- pub(crate) use self::interrupt::{AtomicI32, AtomicU32};
- #[cfg(any(
- not(any(target_pointer_width = "16", target_pointer_width = "32")),
- feature = "fallback",
- ))]
- pub(crate) use self::interrupt::{AtomicI64, AtomicU64};
- #[cfg(feature = "fallback")]
- pub(crate) use self::interrupt::{AtomicI128, AtomicU128};
-}
-
-// no core (64-bit | 128-bit) atomic & has CAS => use lock-base fallback
-#[cfg(feature = "fallback")]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(not(portable_atomic_no_atomic_cas)))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(target_has_atomic = "ptr"))]
-items! {
- #[cfg(not(all(
- target_arch = "arm",
- not(any(miri, portable_atomic_sanitize_thread)),
- not(portable_atomic_no_asm),
- any(target_os = "linux", target_os = "android"),
- not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
- not(portable_atomic_no_outline_atomics),
- )))]
- #[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_64))]
- #[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "64")))]
- pub(crate) use self::fallback::{AtomicI64, AtomicU64};
- #[cfg(not(any(
- all(
- target_arch = "aarch64",
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
- ),
- all(
- target_arch = "x86_64",
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
- any(
- target_feature = "cmpxchg16b",
- portable_atomic_target_feature = "cmpxchg16b",
- all(
- feature = "fallback",
- not(portable_atomic_no_cmpxchg16b_target_feature),
- not(portable_atomic_no_outline_atomics),
- not(any(target_env = "sgx", miri)),
- ),
- ),
- ),
- all(
- target_arch = "powerpc64",
- portable_atomic_unstable_asm_experimental_arch,
- any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- all(
- feature = "fallback",
- not(portable_atomic_no_outline_atomics),
- portable_atomic_outline_atomics, // TODO(powerpc64): currently disabled by default
- any(
- all(
- target_os = "linux",
- any(
- target_env = "gnu",
- all(
- any(target_env = "musl", target_env = "ohos"),
- not(target_feature = "crt-static"),
- ),
- portable_atomic_outline_atomics,
- ),
- ),
- target_os = "android",
- target_os = "freebsd",
- ),
- not(any(miri, portable_atomic_sanitize_thread)),
- ),
- ),
- ),
- all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch),
- )))]
- pub(crate) use self::fallback::{AtomicI128, AtomicU128};
-}
-
-// 64-bit atomics (platform-specific)
-// pre-v6 ARM Linux
-#[cfg(feature = "fallback")]
-#[cfg(all(
- target_arch = "arm",
- not(any(miri, portable_atomic_sanitize_thread)),
- not(portable_atomic_no_asm),
- any(target_os = "linux", target_os = "android"),
- not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
- not(portable_atomic_no_outline_atomics),
-))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_64))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "64")))]
-pub(crate) use self::arm_linux::{AtomicI64, AtomicU64};
-
-// 128-bit atomics (platform-specific)
-// aarch64
-#[cfg(all(
- target_arch = "aarch64",
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
-))]
-pub(crate) use self::aarch64::{AtomicI128, AtomicU128};
-// x86_64 & (cmpxchg16b | outline-atomics)
-#[cfg(all(
- target_arch = "x86_64",
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
- any(
- target_feature = "cmpxchg16b",
- portable_atomic_target_feature = "cmpxchg16b",
- all(
- feature = "fallback",
- not(portable_atomic_no_cmpxchg16b_target_feature),
- not(portable_atomic_no_outline_atomics),
- not(any(target_env = "sgx", miri)),
- ),
- ),
-))]
-pub(crate) use self::x86_64::{AtomicI128, AtomicU128};
-// powerpc64 & (pwr8 | outline-atomics)
-#[cfg(all(
- target_arch = "powerpc64",
- portable_atomic_unstable_asm_experimental_arch,
- any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- all(
- feature = "fallback",
- not(portable_atomic_no_outline_atomics),
- portable_atomic_outline_atomics, // TODO(powerpc64): currently disabled by default
- any(
- all(
- target_os = "linux",
- any(
- target_env = "gnu",
- all(
- any(target_env = "musl", target_env = "ohos"),
- not(target_feature = "crt-static"),
- ),
- portable_atomic_outline_atomics,
- ),
- ),
- target_os = "android",
- target_os = "freebsd",
- ),
- not(any(miri, portable_atomic_sanitize_thread)),
- ),
- ),
-))]
-pub(crate) use self::powerpc64::{AtomicI128, AtomicU128};
-// s390x
-#[cfg(all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch))]
-pub(crate) use self::s390x::{AtomicI128, AtomicU128};