]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: remove duff support for amd64
authorKeith Randall <khr@golang.org>
Tue, 17 Jun 2025 17:56:53 +0000 (10:56 -0700)
committerGopher Robot <gobot@golang.org>
Fri, 15 Aug 2025 18:13:59 +0000 (11:13 -0700)
Change-Id: I742b49a3889892b7b1bb354f47f1c0d933c041e4
Reviewed-on: https://go-review.googlesource.com/c/go/+/682395
Auto-Submit: Keith Randall <khr@golang.org>
Reviewed-by: Jorropo <jorropo.pgm@gmail.com>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/cmd/internal/obj/x86/asm6.go
src/runtime/duff_amd64.s [deleted file]
src/runtime/mkduff.go

index 0906f16eaae7507c714e6466d2a82b7df3529af8..b071bd530d13527d1af5d049e913fd169f19ddb8 100644 (file)
@@ -4013,15 +4013,6 @@ func (ab *AsmBuf) mediaop(ctxt *obj.Link, o *Optab, op int, osize int, z int) in
        return z
 }
 
-var bpduff1 = []byte{
-       0x48, 0x89, 0x6c, 0x24, 0xf0, // MOVQ BP, -16(SP)
-       0x48, 0x8d, 0x6c, 0x24, 0xf0, // LEAQ -16(SP), BP
-}
-
-var bpduff2 = []byte{
-       0x48, 0x8b, 0x6d, 0x00, // MOVQ 0(BP), BP
-}
-
 // asmevex emits EVEX pregis and opcode byte.
 // In addition to asmvex r/m, vvvv and reg fields also requires optional
 // K-masking register.
@@ -4859,16 +4850,6 @@ func (ab *AsmBuf) doasm(ctxt *obj.Link, cursym *obj.LSym, p *obj.Prog) {
                                        ctxt.Diag("directly calling duff when dynamically linking Go")
                                }
 
-                               if yt.zcase == Zcallduff && ctxt.Arch.Family == sys.AMD64 {
-                                       // Maintain BP around call, since duffcopy/duffzero can't do it
-                                       // (the call jumps into the middle of the function).
-                                       // This makes it possible to see call sites for duffcopy/duffzero in
-                                       // BP-based profiling tools like Linux perf (which is the
-                                       // whole point of maintaining frame pointers in Go).
-                                       // MOVQ BP, -16(SP)
-                                       // LEAQ -16(SP), BP
-                                       ab.Put(bpduff1)
-                               }
                                ab.Put1(byte(op))
                                cursym.AddRel(ctxt, obj.Reloc{
                                        Type: objabi.R_CALL,
@@ -4879,12 +4860,6 @@ func (ab *AsmBuf) doasm(ctxt *obj.Link, cursym *obj.LSym, p *obj.Prog) {
                                })
                                ab.PutInt32(0)
 
-                               if yt.zcase == Zcallduff && ctxt.Arch.Family == sys.AMD64 {
-                                       // Pop BP pushed above.
-                                       // MOVQ 0(BP), BP
-                                       ab.Put(bpduff2)
-                               }
-
                        // TODO: jump across functions needs reloc
                        case Zbr, Zjmp, Zloop:
                                if p.As == AXBEGIN {
diff --git a/src/runtime/duff_amd64.s b/src/runtime/duff_amd64.s
deleted file mode 100644 (file)
index 69e9980..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-// Code generated by mkduff.go; DO NOT EDIT.
-// Run go generate from src/runtime to update.
-// See mkduff.go for comments.
-
-#include "textflag.h"
-
-TEXT runtime·duffzero<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       MOVUPS  X15,(DI)
-       MOVUPS  X15,16(DI)
-       MOVUPS  X15,32(DI)
-       MOVUPS  X15,48(DI)
-       LEAQ    64(DI),DI
-
-       RET
-
-TEXT runtime·duffcopy<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       MOVUPS  (SI), X0
-       ADDQ    $16, SI
-       MOVUPS  X0, (DI)
-       ADDQ    $16, DI
-
-       RET
index a0ec98730718077070ce928327533098e66efbd8..dfff084e80f1a64966fdbbef4a64dd29574d777c 100644 (file)
@@ -32,7 +32,6 @@ import (
 )
 
 func main() {
-       gen("amd64", notags, zeroAMD64, copyAMD64)
        gen("386", notags, zero386, copy386)
        gen("arm", notags, zeroARM, copyARM)
        gen("loong64", notags, zeroLOONG64, copyLOONG64)