From: Mauri de Souza Meneguzzo Date: Tue, 21 Nov 2023 01:02:31 +0000 (+0000) Subject: runtime/internal/atomic: deduplicate And/Or code on arm X-Git-Tag: go1.22rc1~219 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4bfed5ce748a2dbb3f1e35b42949dd3a53601186;p=gostls13.git runtime/internal/atomic: deduplicate And/Or code on arm Turns out after adding the generic implementation for And/Or we ended up with duplicated ops that are exactly the same for arm. Apologies for the oversight, this CL removes the redundant arm code and adds arm to the generic build flags. For #61395 Change-Id: Id5e5a5cf113774948f8e772592e898d0810ad1f6 GitHub-Last-Rev: 4d8c857d15f0267ee0c8bb88a202afd49a6075dc GitHub-Pull-Request: golang/go#64299 Reviewed-on: https://go-review.googlesource.com/c/go/+/544017 LUCI-TryBot-Result: Go LUCI Reviewed-by: Cherry Mui TryBot-Result: Gopher Robot Reviewed-by: Michael Knyszek Run-TryBot: Cherry Mui --- diff --git a/src/runtime/internal/atomic/atomic_andor_generic.go b/src/runtime/internal/atomic/atomic_andor_generic.go index c790e062c5..57f80ff871 100644 --- a/src/runtime/internal/atomic/atomic_andor_generic.go +++ b/src/runtime/internal/atomic/atomic_andor_generic.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build s390x || loong64 || mips || mipsle || mips64 || mips64le +//go:build arm || s390x || loong64 || mips || mipsle || mips64 || mips64le package atomic diff --git a/src/runtime/internal/atomic/atomic_arm.go b/src/runtime/internal/atomic/atomic_arm.go index ae609cf4db..567e951244 100644 --- a/src/runtime/internal/atomic/atomic_arm.go +++ b/src/runtime/internal/atomic/atomic_arm.go @@ -208,66 +208,6 @@ func And(addr *uint32, v uint32) { } } -//go:nosplit -func Or32(addr *uint32, v uint32) uint32 { - for { - old := *addr - if Cas(addr, old, old|v) { - return old - } - } -} - -//go:nosplit -func And32(addr *uint32, v uint32) uint32 { - for { - old := *addr - if Cas(addr, old, old&v) { - return old - } - } -} - -//go:nosplit -func Or64(addr *uint64, v uint64) uint64 { - for { - old := *addr - if Cas64(addr, old, old|v) { - return old - } - } -} - -//go:nosplit -func And64(addr *uint64, v uint64) uint64 { - for { - old := *addr - if Cas64(addr, old, old&v) { - return old - } - } -} - -//go:nosplit -func Oruintptr(addr *uintptr, v uintptr) uintptr { - for { - old := *addr - if Casuintptr(addr, old, old|v) { - return old - } - } -} - -//go:nosplit -func Anduintptr(addr *uintptr, v uintptr) uintptr { - for { - old := *addr - if Casuintptr(addr, old, old&v) { - return old - } - } -} - //go:nosplit func armcas(ptr *uint32, old, new uint32) bool