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);
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);