For #69735
Change-Id: I5b9f57315d693d613dc88dc02c10bee39aeeef76
GitHub-Last-Rev:
690337e5b81a48bdcb808526d0c5f4837e8912b7
GitHub-Pull-Request: golang/go#69923
Reviewed-on: https://go-review.googlesource.com/c/go/+/620756
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
//go:noescape
func Xchg(ptr *uint32, new uint32) uint32
+//go:noescape
+func Xchg8(ptr *uint8, new uint8) uint8
+
//go:noescape
func Xchguintptr(ptr *uintptr, new uintptr) uintptr
MOVL CX, ret_hi+16(FP)
RET
+// uint8 Xchg8(uint8 *ptr, uint8 new)
+TEXT ·Xchg8(SB), NOSPLIT, $0-9
+ MOVL ptr+0(FP), BX
+ MOVB new+4(FP), AX
+ XCHGB AX, 0(BX)
+ MOVB AX, ret+8(FP)
+ RET
+
TEXT ·Xchg(SB), NOSPLIT, $0-12
MOVL ptr+0(FP), BX
MOVL new+4(FP), AX
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build amd64 || arm64 || ppc64 || ppc64le
+//go:build 386 || amd64 || arm64 || ppc64 || ppc64le
package atomic_test