mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 07:22:42 +00:00
Rollup merge of #82093 - bjorn3:more_atomic_tests, r=kennytm
Add tests for Atomic*::fetch_{min,max} This ensures that all atomic operations except for fences are tested. This has been useful to test my work on using atomic instructions for atomic operations in cg_clif instead of a global lock.
This commit is contained in:
commit
f8b61d852c
@ -59,6 +59,26 @@ fn uint_xor() {
|
||||
assert_eq!(x.load(SeqCst), 0xf731 ^ 0x137f);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(not(target_arch = "arm"), target_os = "linux"))] // Missing intrinsic in compiler-builtins
|
||||
fn uint_min() {
|
||||
let x = AtomicUsize::new(0xf731);
|
||||
assert_eq!(x.fetch_min(0x137f, SeqCst), 0xf731);
|
||||
assert_eq!(x.load(SeqCst), 0x137f);
|
||||
assert_eq!(x.fetch_min(0xf731, SeqCst), 0x137f);
|
||||
assert_eq!(x.load(SeqCst), 0x137f);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(not(target_arch = "arm"), target_os = "linux"))] // Missing intrinsic in compiler-builtins
|
||||
fn uint_max() {
|
||||
let x = AtomicUsize::new(0x137f);
|
||||
assert_eq!(x.fetch_max(0xf731, SeqCst), 0x137f);
|
||||
assert_eq!(x.load(SeqCst), 0xf731);
|
||||
assert_eq!(x.fetch_max(0x137f, SeqCst), 0xf731);
|
||||
assert_eq!(x.load(SeqCst), 0xf731);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn int_and() {
|
||||
let x = AtomicIsize::new(0xf731);
|
||||
@ -87,6 +107,26 @@ fn int_xor() {
|
||||
assert_eq!(x.load(SeqCst), 0xf731 ^ 0x137f);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(not(target_arch = "arm"), target_os = "linux"))] // Missing intrinsic in compiler-builtins
|
||||
fn int_min() {
|
||||
let x = AtomicIsize::new(0xf731);
|
||||
assert_eq!(x.fetch_min(0x137f, SeqCst), 0xf731);
|
||||
assert_eq!(x.load(SeqCst), 0x137f);
|
||||
assert_eq!(x.fetch_min(0xf731, SeqCst), 0x137f);
|
||||
assert_eq!(x.load(SeqCst), 0x137f);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(not(target_arch = "arm"), target_os = "linux"))] // Missing intrinsic in compiler-builtins
|
||||
fn int_max() {
|
||||
let x = AtomicIsize::new(0x137f);
|
||||
assert_eq!(x.fetch_max(0xf731, SeqCst), 0x137f);
|
||||
assert_eq!(x.load(SeqCst), 0xf731);
|
||||
assert_eq!(x.fetch_max(0x137f, SeqCst), 0xf731);
|
||||
assert_eq!(x.load(SeqCst), 0xf731);
|
||||
}
|
||||
|
||||
static S_FALSE: AtomicBool = AtomicBool::new(false);
|
||||
static S_TRUE: AtomicBool = AtomicBool::new(true);
|
||||
static S_INT: AtomicIsize = AtomicIsize::new(0);
|
||||
|
Loading…
Reference in New Issue
Block a user