runtime/internal/sys: remove Bswap{32|64} assembly for 386
CL 465515 instrinsify these functions, so that we can remove them.
Change-Id: I81c9eb62ecf56d5a292dc5aced542b36b53847dc
Reviewed-on: https://go-review.googlesource.com/c/go/+/465516
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Keith Randall <khr@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/src/runtime/internal/sys/intrinsics.go b/src/runtime/internal/sys/intrinsics.go
index 902d893..b68b3cd 100644
--- a/src/runtime/internal/sys/intrinsics.go
+++ b/src/runtime/internal/sys/intrinsics.go
@@ -76,35 +76,3 @@
func TrailingZeros8(x uint8) int {
return int(ntz8tab[x])
}
-
-// Bswap64 returns its input with byte order reversed
-// 0x0102030405060708 -> 0x0807060504030201
-func Bswap64(x uint64) uint64 {
- c8 := uint64(0x00ff00ff00ff00ff)
- a := x >> 8 & c8
- b := (x & c8) << 8
- x = a | b
- c16 := uint64(0x0000ffff0000ffff)
- a = x >> 16 & c16
- b = (x & c16) << 16
- x = a | b
- c32 := uint64(0x00000000ffffffff)
- a = x >> 32 & c32
- b = (x & c32) << 32
- x = a | b
- return x
-}
-
-// Bswap32 returns its input with byte order reversed
-// 0x01020304 -> 0x04030201
-func Bswap32(x uint32) uint32 {
- c8 := uint32(0x00ff00ff)
- a := x >> 8 & c8
- b := (x & c8) << 8
- x = a | b
- c16 := uint32(0x0000ffff)
- a = x >> 16 & c16
- b = (x & c16) << 16
- x = a | b
- return x
-}
diff --git a/src/runtime/internal/sys/intrinsics_386.s b/src/runtime/internal/sys/intrinsics_386.s
index f33ade0..fe4c561 100644
--- a/src/runtime/internal/sys/intrinsics_386.s
+++ b/src/runtime/internal/sys/intrinsics_386.s
@@ -41,18 +41,3 @@
MOVL $8, AX
MOVL AX, ret+4(FP)
RET
-
-TEXT runtime∕internal∕sys·Bswap64(SB), NOSPLIT, $0-16
- MOVL x_lo+0(FP), AX
- MOVL x_hi+4(FP), BX
- BSWAPL AX
- BSWAPL BX
- MOVL BX, ret_lo+8(FP)
- MOVL AX, ret_hi+12(FP)
- RET
-
-TEXT runtime∕internal∕sys·Bswap32(SB), NOSPLIT, $0-8
- MOVL x+0(FP), AX
- BSWAPL AX
- MOVL AX, ret+4(FP)
- RET
diff --git a/src/runtime/internal/sys/intrinsics_common.go b/src/runtime/internal/sys/intrinsics_common.go
index 1461551..78ba444 100644
--- a/src/runtime/internal/sys/intrinsics_common.go
+++ b/src/runtime/internal/sys/intrinsics_common.go
@@ -93,6 +93,38 @@
return int(len8tab[x])
}
+// Bswap64 returns its input with byte order reversed
+// 0x0102030405060708 -> 0x0807060504030201
+func Bswap64(x uint64) uint64 {
+ c8 := uint64(0x00ff00ff00ff00ff)
+ a := x >> 8 & c8
+ b := (x & c8) << 8
+ x = a | b
+ c16 := uint64(0x0000ffff0000ffff)
+ a = x >> 16 & c16
+ b = (x & c16) << 16
+ x = a | b
+ c32 := uint64(0x00000000ffffffff)
+ a = x >> 32 & c32
+ b = (x & c32) << 32
+ x = a | b
+ return x
+}
+
+// Bswap32 returns its input with byte order reversed
+// 0x01020304 -> 0x04030201
+func Bswap32(x uint32) uint32 {
+ c8 := uint32(0x00ff00ff)
+ a := x >> 8 & c8
+ b := (x & c8) << 8
+ x = a | b
+ c16 := uint32(0x0000ffff)
+ a = x >> 16 & c16
+ b = (x & c16) << 16
+ x = a | b
+ return x
+}
+
// Prefetch prefetches data from memory addr to cache
//
// AMD64: Produce PREFETCHT0 instruction
diff --git a/src/runtime/internal/sys/intrinsics_stubs.go b/src/runtime/internal/sys/intrinsics_stubs.go
index 66cfcde..375aac1 100644
--- a/src/runtime/internal/sys/intrinsics_stubs.go
+++ b/src/runtime/internal/sys/intrinsics_stubs.go
@@ -9,5 +9,3 @@
func TrailingZeros64(x uint64) int
func TrailingZeros32(x uint32) int
func TrailingZeros8(x uint8) int
-func Bswap64(x uint64) uint64
-func Bswap32(x uint32) uint32