]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm, cmd/internal/obj/s390x: fix VFMA and VFMS encoding
authorMichael Munday <munday@ca.ibm.com>
Fri, 14 Oct 2016 15:37:55 +0000 (11:37 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 21 Oct 2016 02:14:57 +0000 (02:14 +0000)
The m5 and m6 fields were the wrong way round.

Fixes #17444.

Change-Id: I10297064f2cd09d037eac581c96a011358f70aae
Reviewed-on: https://go-review.googlesource.com/31130
Run-TryBot: Michael Munday <munday@ca.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/asm/internal/asm/testdata/s390x.s
src/cmd/internal/obj/s390x/asmz.go

index 0621261e13c27ccad3b77026e5ac4b69bd4df06f..f6278e9dbda7e5d08e5ae550aa3d74b987479c86 100644 (file)
@@ -323,7 +323,10 @@ TEXT main·foo(SB),7,$16-0 // TEXT main.foo(SB), 7, $16-0
        VERIMB  $2, V31, V1, V2         // VERIMB  V31, V1, $2, V2         // e72f10020472
        VSEL    V1, V2, V3, V4          // VSEL    V2, V3, V1, V4          // e7412000308d
        VGFMAH  V21, V31, V24, V0       // VGFMAH  V31, V24, V21, V0       // e705f10087bc
-       WFMSDB  V2, V25, V24, V31       // WFMSDB  V25, V24, V2, V31       // e7f298038b8e
+       VFMADB  V16, V8, V9, V10        // VFMADB  V8, V9, V16, V10        // e7a08300948f
+       WFMADB  V17, V18, V19, V20      // WFMADB  V18, V19, V17, V20      // e74123083f8f
+       VFMSDB  V2, V25, V24, V31       // VFMSDB  V25, V24, V2, V31       // e7f293008b8e
+       WFMSDB  V31, V2, V3, V4         // WFMSDB  V2, V3, V31, V4         // e74f2308348e
        VPERM   V31, V0, V2, V3         // VPERM   V0, V2, V31, V3         // e73f0000248c
        VPDI    $1, V2, V31, V1         // VPDI    V2, V31, $1, V1         // e712f0001284
        VLEG    $1, (R3), V1            // VLEG    (R3), $1, V1            // e71030001002
index 270670474b759f9115b627e7636b9b55f28f3153..80ae303f4f9edbd80c7cebff5a16c1812fa3e68a 100644 (file)
@@ -4121,7 +4121,7 @@ func asmout(ctxt *obj.Link, asm *[]byte) {
                v2 := uint32(p.From3.Reg)
                v3 := uint32(p.From.Reg)
                v4 := uint32(p.Reg)
-               zVRRe(op, v1, v2, v3, m5, m6, v4, asm)
+               zVRRe(op, v1, v2, v3, m6, m5, v4, asm)
 
        case 122: // VRR-f LOAD VRS FROM GRS DISJOINT
                op, _, _ := vop(p.As)