// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package atomic

import 

// Export some functions via linkname to assembly in sync/atomic.
//
//go:linkname Load
//go:linkname Loadp
//go:linkname Load64

//go:nosplit
//go:noinline
func ( *uint32) uint32 {
	return *
}

//go:nosplit
//go:noinline
func ( unsafe.Pointer) unsafe.Pointer {
	return *(*unsafe.Pointer)()
}

//go:nosplit
//go:noinline
func ( *uint64) uint64 {
	return *
}

//go:nosplit
//go:noinline
func ( *uint32) uint32 {
	return *
}

//go:nosplit
//go:noinline
func ( *uint64) uint64 {
	return *
}

//go:nosplit
//go:noinline
func ( *uintptr) uintptr {
	return *
}

//go:noescape
func ( *uint32,  int32) uint32

//go:noescape
func ( *uint64,  int64) uint64

//go:noescape
func ( *uintptr,  uintptr) uintptr

//go:noescape
func ( *uint32,  uint32) uint32

//go:noescape
func ( *uint64,  uint64) uint64

//go:noescape
func ( *uintptr,  uintptr) uintptr

//go:nosplit
//go:noinline
func ( *uint8) uint8 {
	return *
}

//go:noescape
func ( *uint8,  uint8)

//go:noescape
func ( *uint8,  uint8)

//go:noescape
func ( *uint32,  uint32)

//go:noescape
func ( *uint32,  uint32)

// NOTE: Do not add atomicxor8 (XOR is not idempotent).

//go:noescape
func ( *uint64, ,  uint64) bool

//go:noescape
func ( *uint32, ,  uint32) bool

//go:noescape
func ( *uint32,  uint32)

//go:noescape
func ( *uint8,  uint8)

//go:noescape
func ( *uint64,  uint64)

//go:noescape
func ( *uint32,  uint32)

//go:noescape
func ( *uint64,  uint64)

//go:noescape
func ( *uintptr,  uintptr)

// StorepNoWB performs *ptr = val atomically and without a write
// barrier.
//
// NO go:noescape annotation; see atomic_pointer.go.
func ( unsafe.Pointer,  unsafe.Pointer)