]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm,cmd/internal/obj/ppc64: add VPERMXOR to ppc64 assembler
authorLynn Boger <laboger@linux.vnet.ibm.com>
Tue, 13 Nov 2018 21:05:15 +0000 (16:05 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Wed, 28 Nov 2018 21:49:33 +0000 (21:49 +0000)
VPERMXOR is missing from the Go assembler for ppc64. It has the
same format as VPERM. It was requested by an external user so
they could write an optimized algorithm in asm.

Change-Id: Icf4c682f7f46716ccae64e6ae3d62e8cec67f6c1
Reviewed-on: https://go-review.googlesource.com/c/151578
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Carlos Eduardo Seo <cseo@linux.vnet.ibm.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 9e8929dac4c6962cdd736d855f27066969147429..366c80c0905ae26c376f100ee65de0b69807ac57 100644 (file)
@@ -948,6 +948,7 @@ label1:
 //     <MNEMONIC> VRA,VRB,VRC,VRT produces
 //     <mnemonic> VRT,VRA,VRB,VRC
        VPERM V3, V2, V1, V0
+       VPERMXOR V3, V2, V1, V0
 
 //     Vector bit permute, VX-form
 //     <MNEMONIC> VRA,VRB,VRT produces
index 0fd9c81039140a7ea7f5ca728ed24016e7ffb6c3..6b248d5c366c26058aaa50b2896ef7f9d14008ac 100644 (file)
@@ -903,6 +903,7 @@ const (
        AVCMPNEZB
        AVCMPNEZBCC
        AVPERM
+       AVPERMXOR
        AVBPERMQ
        AVBPERMD
        AVSEL
index c04ce27e463138a6f51b3b62dc6090383f1942dc..fb934e96f953bb13e0cc2ad079d989ada93b1332 100644 (file)
@@ -493,6 +493,7 @@ var Anames = []string{
        "VCMPNEZB",
        "VCMPNEZBCC",
        "VPERM",
+       "VPERMXOR",
        "VBPERMQ",
        "VBPERMD",
        "VSEL",
index 51a9a18601347efa3c20ffeb9f3641deeef6bde9..d7f1a08622af2f3ca7ae569386cf639ef4f9968c 100644 (file)
@@ -1498,7 +1498,7 @@ func buildop(ctxt *obj.Link) {
                        opset(AVCMPNEZBCC, r0)
 
                case AVPERM: /* vperm */
-                       opset(AVPERM, r0)
+                       opset(AVPERMXOR, r0)
 
                case AVBPERMQ: /* vbpermq, vbpermd */
                        opset(AVBPERMD, r0)
@@ -4503,6 +4503,8 @@ func (c *ctxt9) oprrr(a obj.As) uint32 {
 
        case AVPERM:
                return OPVX(4, 43, 0, 0) /* vperm - v2.03 */
+       case AVPERMXOR:
+               return OPVX(4, 45, 0, 0) /* vpermxor - v2.03 */
 
        case AVSEL:
                return OPVX(4, 42, 0, 0) /* vsel - v2.03 */