text: // run-pass
  
  #![allow(stable_features)]
  
  #![feature(extended_compare_and_swap)]
  use std::sync::atomic::AtomicIsize;
  use std::sync::atomic::Ordering::*;
  
  static ATOMIC: AtomicIsize = AtomicIsize::new(0);
  
  fn main() {
      // Make sure codegen can emit all the intrinsics correctly
      ATOMIC.compare_exchange(0, 1, Relaxed, Relaxed).ok();
      ATOMIC.compare_exchange(0, 1, Acquire, Relaxed).ok();
      ATOMIC.compare_exchange(0, 1, Release, Relaxed).ok();
      ATOMIC.compare_exchange(0, 1, AcqRel, Relaxed).ok();
      ATOMIC.compare_exchange(0, 1, SeqCst, Relaxed).ok();
      ATOMIC.compare_exchange(0, 1, Acquire, Acquire).ok();
      ATOMIC.compare_exchange(0, 1, AcqRel, Acquire).ok();
      ATOMIC.compare_exchange(0, 1, SeqCst, Acquire).ok();
      ATOMIC.compare_exchange(0, 1, SeqCst, SeqCst).ok();
      ATOMIC.compare_exchange_weak(0, 1, Relaxed, Relaxed).ok();
      ATOMIC.compare_exchange_weak(0, 1, Acquire, Relaxed).ok();
      ATOMIC.compare_exchange_weak(0, 1, Release, Relaxed).ok();
      ATOMIC.compare_exchange_weak(0, 1, AcqRel, Relaxed).ok();
      ATOMIC.compare_exchange_weak(0, 1, SeqCst, Relaxed).ok();
      ATOMIC.compare_exchange_weak(0, 1, Acquire, Acquire).ok();
      ATOMIC.compare_exchange_weak(0, 1, AcqRel, Acquire).ok();
      ATOMIC.compare_exchange_weak(0, 1, SeqCst, Acquire).ok();
      ATOMIC.compare_exchange_weak(0, 1, SeqCst, SeqCst).ok();
  }
  