x86/x86_64: `lock xor` instead of `cmpxchg` loop ({8,16,32}-bit atomics on x86, but additionally 64-bit atomics on x86_64) - MSP430: `xor` instead of disabling interrupts ({8,16}-bit atomics) Note: On x86/x86_64, the use of either function should not usually affect the generated code, because LLVM can properly optimize the case where the result is unused. # Examples ``` use portable_atomic::{AtomicI16, Ordering}; let foo = AtomicI16::new(0b101101); foo.xor(0b110011, Ordering::SeqCst); assert_eq!(foo.load(Ordering::SeqCst), 0b011110); ```