types_64bit.mx raw

   1  // Copyright 2021 The Go Authors. All rights reserved.
   2  // Use of this source code is governed by a BSD-style
   3  // license that can be found in the LICENSE file.
   4  
   5  //go:build amd64 || arm64 || loong64 || mips64 || mips64le || ppc64 || ppc64le || riscv64 || s390x || wasm
   6  
   7  package atomic
   8  
   9  // LoadAcquire is a partially unsynchronized version
  10  // of Load that relaxes ordering constraints. Other threads
  11  // may observe operations that precede this operation to
  12  // occur after it, but no operation that occurs after it
  13  // on this thread can be observed to occur before it.
  14  //
  15  // WARNING: Use sparingly and with great care.
  16  //
  17  //go:nosplit
  18  func (u *Uint64) LoadAcquire() uint64 {
  19  	return LoadAcq64(&u.value)
  20  }
  21  
  22  // StoreRelease is a partially unsynchronized version
  23  // of Store that relaxes ordering constraints. Other threads
  24  // may observe operations that occur after this operation to
  25  // precede it, but no operation that precedes it
  26  // on this thread can be observed to occur after it.
  27  //
  28  // WARNING: Use sparingly and with great care.
  29  //
  30  //go:nosplit
  31  func (u *Uint64) StoreRelease(value uint64) {
  32  	StoreRel64(&u.value, value)
  33  }
  34