]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/ppc64: add double-decimal arithmetic instructions
authorJayanth Krishnamurthy <jayanth.krishnamurthy@ibm.com>
Wed, 11 Sep 2024 14:58:04 +0000 (09:58 -0500)
committerPaul Murphy <murp@ibm.com>
Tue, 29 Oct 2024 13:14:03 +0000 (13:14 +0000)
Assembler support provided for the instructions DADD, DSUB, DMUL, and DDIV.

Change-Id: Ic12ba02ce453cb1ca275334ca1924fb2009da767
Reviewed-on: https://go-review.googlesource.com/c/go/+/620856
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Paul Murphy <murp@ibm.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/cmd/asm/internal/asm/testdata/ppc64.s
src/cmd/internal/obj/ppc64/a.out.go
src/cmd/internal/obj/ppc64/anames.go
src/cmd/internal/obj/ppc64/asm9.go

index e2c1000e0b92f08dcf5b724efa24453aeaefead9..e7ab944a1d7371c940bea1be720761bbaedde784 100644 (file)
@@ -681,9 +681,13 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
        FMOVDCC F1, F2                  // fc400891
        FADDS F1, F2                    // ec42082a
        FADDS F1, F2, F3                // ec62082a
+       DADD F1, F2                     // ec420804
+       DADD F1, F2, F3                 // ec620804
        FADDSCC F1, F2, F3              // ec62082b
        FSUB F1, F2                     // fc420828
        FSUB F1, F2, F3                 // fc620828
+       DSUB F1, F2                     // ec420c04
+        DSUB F1, F2, F3                 // ec620c04
        FSUBCC F1, F2, F3               // fc620829
        FSUBS F1, F2                    // ec420828
        FSUBS F1, F2, F3                // ec620828
@@ -691,12 +695,16 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
        FSUBSCC F1, F2, F3              // ec620829
        FMUL F1, F2                     // fc420072
        FMUL F1, F2, F3                 // fc620072
+       DMUL F1, F2                     // ec420044
+        DMUL F1, F2, F3                 // ec620044
        FMULCC F1, F2, F3               // fc620073
        FMULS F1, F2                    // ec420072
        FMULS F1, F2, F3                // ec620072
        FMULSCC F1, F2, F3              // ec620073
        FDIV F1, F2                     // fc420824
        FDIV F1, F2, F3                 // fc620824
+       DDIV F1, F2                     // ec420c44
+        DDIV F1, F2, F3                 // ec620c44
        FDIVCC F1, F2, F3               // fc620825
        FDIVS F1, F2                    // ec420824
        FDIVS F1, F2, F3                // ec620824
index 3782af29182618aefd2a18a12a893b318d85927c..137c6d2ff21ae6182cfc5b631790712777d9e267 100644 (file)
@@ -504,6 +504,8 @@ const (
        ACROR
        ACRORN
        ACRXOR
+       ADADD
+       ADDIV
        ADIVW
        ADIVWCC
        ADIVWVCC
@@ -512,6 +514,8 @@ const (
        ADIVWUCC
        ADIVWUVCC
        ADIVWUV
+       ADMUL
+       ADSUB
        AMODUD
        AMODUW
        AMODSD
index 1cf41b83070ec4cbe80248f02347e01b20fa5bf6..f9ec19155144dcc6fc92605f1ff874b9be20f893 100644 (file)
@@ -57,6 +57,8 @@ var Anames = []string{
        "CROR",
        "CRORN",
        "CRXOR",
+       "DADD",
+       "DDIV",
        "DIVW",
        "DIVWCC",
        "DIVWVCC",
@@ -65,6 +67,8 @@ var Anames = []string{
        "DIVWUCC",
        "DIVWUVCC",
        "DIVWUV",
+       "DMUL",
+       "DSUB",
        "MODUD",
        "MODUW",
        "MODSD",
index 74f1772e3df72f60523253d34e9b99345e290a11..1a884dea7bb6f7332edeb572062590f668f415e1 100644 (file)
@@ -1871,6 +1871,9 @@ func buildop(ctxt *obj.Link) {
                        opset(AFSUBS, r0)
                        opset(AFSUBCC, r0)
                        opset(AFSUBSCC, r0)
+                       opset(ADADD, r0)
+                       opset(ADDIV, r0)
+                       opset(ADSUB, r0)
 
                case AFMADD:
                        opset(AFMADDCC, r0)
@@ -1895,6 +1898,7 @@ func buildop(ctxt *obj.Link) {
                        opset(AFMULS, r0)
                        opset(AFMULCC, r0)
                        opset(AFMULSCC, r0)
+                       opset(ADMUL, r0)
 
                case AFCMPO:
                        opset(AFCMPU, r0)
@@ -3935,6 +3939,15 @@ func (c *ctxt9) oprrr(a obj.As) uint32 {
        case ACRXOR:
                return OPVCC(19, 193, 0, 0)
 
+       case ADADD:
+               return OPVCC(59, 2, 0, 0)
+       case ADDIV:
+               return OPVCC(59, 546, 0, 0)
+       case ADMUL:
+               return OPVCC(59, 34, 0, 0)
+       case ADSUB:
+               return OPVCC(59, 514, 0, 0)
+
        case ADCBF:
                return OPVCC(31, 86, 0, 0)
        case ADCBI: