sig
  type 'a t = 'a atomic_loc
  external get : 'Atomic.Loc.t -> 'a = "%atomic_load_loc"
  val set : 'Atomic.Loc.t -> '-> unit
  external exchange : 'Atomic.Loc.t -> '-> 'a = "%atomic_exchange_loc"
  external compare_and_set : 'Atomic.Loc.t -> '-> '-> bool
    = "%atomic_cas_loc"
  external fetch_and_add : int Atomic.Loc.t -> int -> int
    = "%atomic_fetch_add_loc"
  val incr : int Atomic.Loc.t -> unit
  val decr : int Atomic.Loc.t -> unit
end