]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: enable reg args and add duffcopy support on ppc64x
authorLynn Boger <laboger@linux.vnet.ibm.com>
Wed, 22 Sep 2021 14:37:12 +0000 (09:37 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Thu, 23 Sep 2021 15:51:39 +0000 (15:51 +0000)
This adds support for duffcopy on ppc64x and updates the
ssa/config.go file to enable register args and recognize
the duffDevice is available on ppc64x.

Change-Id: Ifc472cc9cc19c9a80e468fb52078c75f7dd44d36
Reviewed-on: https://go-review.googlesource.com/c/go/+/351490
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/cmd/compile/internal/ssa/config.go
src/cmd/internal/obj/ppc64/a.out.go
src/runtime/duff_ppc64x.s
src/runtime/mkduff.go

index 61d1dea6426e09ce6cd8d4c2702689a6cc17744b..5ab7240acf683da59192ba04fc91c12770bfe664 100644 (file)
@@ -239,11 +239,10 @@ func NewConfig(arch string, types Types, ctxt *obj.Link, optimize, softfloat boo
                c.registers = registersPPC64[:]
                c.gpRegMask = gpRegMaskPPC64
                c.fpRegMask = fpRegMaskPPC64
-               //c.intParamRegs = paramIntRegPPC64
-               //c.floatParamRegs = paramFloatRegPPC64
+               c.intParamRegs = paramIntRegPPC64
+               c.floatParamRegs = paramFloatRegPPC64
                c.FPReg = framepointerRegPPC64
                c.LinkReg = linkRegPPC64
-               c.noDuffDevice = true // TODO: Resolve PPC64 DuffDevice (has zero, but not copy)
                c.hasGReg = true
        case "mips64":
                c.BigEndian = true
index dda24a0b966c4479ed088cc47b6c2fa5f84c3efe..b5696f79933419d4f9ac1ce0a2bf8e8e62253099 100644 (file)
@@ -242,8 +242,8 @@ const (
        REGSB   = REG_R2
        REGRET  = REG_R3
        REGARG  = -1      /* -1 disables passing the first argument in register */
-       REGRT1  = REG_R /* reserved for runtime, duffzero and duffcopy */
-       REGRT2  = REG_R /* reserved for runtime, duffcopy */
+       REGRT1  = REG_R20 /* reserved for runtime, duffzero and duffcopy */
+       REGRT2  = REG_R21 /* reserved for runtime, duffcopy */
        REGMIN  = REG_R7  /* register variables allocated from here to REGMAX */
        REGCTXT = REG_R11 /* context for closures */
        REGTLS  = REG_R13 /* C ABI TLS base pointer */
index d4e3b409d24b9d911e8f8ff332c6aec52a187427..eeecf13df14c1bf0a459e491694c1081a40f651f 100644 (file)
 
 #include "textflag.h"
 
-TEXT runtime·duffzero(SB), NOSPLIT|NOFRAME, $0-0
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
-       MOVDU   R0, 8(R3)
+TEXT runtime·duffzero<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
+       MOVDU   R0, 8(R20)
        RET
 
-TEXT runtime·duffcopy(SB), NOSPLIT|NOFRAME, $0-0
-       UNDEF
+TEXT runtime·duffcopy<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       MOVDU   8(R20), R5
+       MOVDU   R5, 8(R21)
+       RET
index f03674509238b0505ef4f7ee9ad93e7085821597..f3c3d8dfb58dd3622010a801a61bf55bdcbd278a 100644 (file)
@@ -188,17 +188,21 @@ func zeroPPC64x(w io.Writer) {
        // R0: always zero
        // R3 (aka REGRT1): ptr to memory to be zeroed - 8
        // On return, R3 points to the last zeroed dword.
-       fmt.Fprintln(w, "TEXT runtime·duffzero(SB), NOSPLIT|NOFRAME, $0-0")
+       fmt.Fprintln(w, "TEXT runtime·duffzero<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0")
        for i := 0; i < 128; i++ {
-               fmt.Fprintln(w, "\tMOVDU\tR0, 8(R3)")
+               fmt.Fprintln(w, "\tMOVDU\tR0, 8(R20)")
        }
        fmt.Fprintln(w, "\tRET")
 }
 
 func copyPPC64x(w io.Writer) {
        // duffcopy is not used on PPC64.
-       fmt.Fprintln(w, "TEXT runtime·duffcopy(SB), NOSPLIT|NOFRAME, $0-0")
-       fmt.Fprintln(w, "\tUNDEF")
+       fmt.Fprintln(w, "TEXT runtime·duffcopy<ABIInternal>(SB), NOSPLIT|NOFRAME, $0-0")
+       for i := 0; i < 128; i++ {
+               fmt.Fprintln(w, "\tMOVDU\t8(R20), R5")
+               fmt.Fprintln(w, "\tMOVDU\tR5, 8(R21)")
+       }
+       fmt.Fprintln(w, "\tRET")
 }
 
 func tagsMIPS64x(w io.Writer) {