diff options
| author | Carlos Eduardo Seo <cseo@linux.vnet.ibm.com> | 2018-04-18 12:03:26 -0300 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2018-04-18 18:03:07 +0000 |
| commit | 4c15fdb32b58cae0a999fdd2fb8eae1c720c870b (patch) | |
| tree | a35c876883a5240d4f561ff04eb074779b66c9d6 /src/cmd/internal/obj/ppc64 | |
| parent | 1473789b74d69ba3d27c4880d2a8b442151e784d (diff) | |
| download | go-4c15fdb32b58cae0a999fdd2fb8eae1c720c870b.tar.xz | |
cmd/internal/obj/ppc64: add vector multiply instructions
This change adds vector multiply instructions to the assembler for
ppc64x.
Change-Id: I5143a2dc3736951344d43999066d38ab8be4a721
Reviewed-on: https://go-review.googlesource.com/107795
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/internal/obj/ppc64')
| -rw-r--r-- | src/cmd/internal/obj/ppc64/a.out.go | 13 | ||||
| -rw-r--r-- | src/cmd/internal/obj/ppc64/anames.go | 13 | ||||
| -rw-r--r-- | src/cmd/internal/obj/ppc64/asm9.go | 41 |
3 files changed, 67 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/ppc64/a.out.go b/src/cmd/internal/obj/ppc64/a.out.go index 55e544209d..8f56da0763 100644 --- a/src/cmd/internal/obj/ppc64/a.out.go +++ b/src/cmd/internal/obj/ppc64/a.out.go @@ -817,6 +817,19 @@ const ( AVSUBE AVSUBEUQM AVSUBECUQ + AVMULESB + AVMULOSB + AVMULEUB + AVMULOUB + AVMULESH + AVMULOSH + AVMULEUH + AVMULOUH + AVMULESW + AVMULOSW + AVMULEUW + AVMULOUW + AVMULUWM AVPMSUM AVPMSUMB AVPMSUMH diff --git a/src/cmd/internal/obj/ppc64/anames.go b/src/cmd/internal/obj/ppc64/anames.go index bfbb544d09..6006f15ad6 100644 --- a/src/cmd/internal/obj/ppc64/anames.go +++ b/src/cmd/internal/obj/ppc64/anames.go @@ -409,6 +409,19 @@ var Anames = []string{ "VSUBE", "VSUBEUQM", "VSUBECUQ", + "VMULESB", + "VMULOSB", + "VMULEUB", + "VMULOUB", + "VMULESH", + "VMULOSH", + "VMULEUH", + "VMULOUH", + "VMULESW", + "VMULOSW", + "VMULEUW", + "VMULOUW", + "VMULUWM", "VPMSUM", "VPMSUMB", "VPMSUMH", diff --git a/src/cmd/internal/obj/ppc64/asm9.go b/src/cmd/internal/obj/ppc64/asm9.go index bfa17fc3b0..4dcb52f9ee 100644 --- a/src/cmd/internal/obj/ppc64/asm9.go +++ b/src/cmd/internal/obj/ppc64/asm9.go @@ -423,6 +423,7 @@ var optab = []Optab{ {AVSUBE, C_VREG, C_VREG, C_VREG, C_VREG, 83, 4, 0}, /* vector subtract extended, va-form */ /* Vector multiply */ + {AVMULESB, C_VREG, C_VREG, C_NONE, C_VREG, 82, 4, 9}, /* vector multiply, vx-form */ {AVPMSUM, C_VREG, C_VREG, C_NONE, C_VREG, 82, 4, 0}, /* vector polynomial multiply & sum, vx-form */ {AVMSUMUDM, C_VREG, C_VREG, C_VREG, C_VREG, 83, 4, 0}, /* vector multiply-sum, va-form */ @@ -1344,6 +1345,19 @@ func buildop(ctxt *obj.Link) { opset(AVSUBEUQM, r0) opset(AVSUBECUQ, r0) + case AVMULESB: /* vmulesb, vmulosb, vmuleub, vmuloub, vmulosh, vmulouh, vmulesw, vmulosw, vmuleuw, vmulouw, vmuluwm */ + opset(AVMULOSB, r0) + opset(AVMULEUB, r0) + opset(AVMULOUB, r0) + opset(AVMULESH, r0) + opset(AVMULOSH, r0) + opset(AVMULEUH, r0) + opset(AVMULOUH, r0) + opset(AVMULESW, r0) + opset(AVMULOSW, r0) + opset(AVMULEUW, r0) + opset(AVMULOUW, r0) + opset(AVMULUWM, r0) case AVPMSUM: /* vpmsumb, vpmsumh, vpmsumw, vpmsumd */ opset(AVPMSUMB, r0) opset(AVPMSUMH, r0) @@ -4182,6 +4196,33 @@ func (c *ctxt9) oprrr(a obj.As) uint32 { case AVADDECUQ: return OPVX(4, 61, 0, 0) /* vaddecuq - v2.07 */ + case AVMULESB: + return OPVX(4, 776, 0, 0) /* vmulesb - v2.03 */ + case AVMULOSB: + return OPVX(4, 264, 0, 0) /* vmulosb - v2.03 */ + case AVMULEUB: + return OPVX(4, 520, 0, 0) /* vmuleub - v2.03 */ + case AVMULOUB: + return OPVX(4, 8, 0, 0) /* vmuloub - v2.03 */ + case AVMULESH: + return OPVX(4, 840, 0, 0) /* vmulesh - v2.03 */ + case AVMULOSH: + return OPVX(4, 328, 0, 0) /* vmulosh - v2.03 */ + case AVMULEUH: + return OPVX(4, 584, 0, 0) /* vmuleuh - v2.03 */ + case AVMULOUH: + return OPVX(4, 72, 0, 0) /* vmulouh - v2.03 */ + case AVMULESW: + return OPVX(4, 904, 0, 0) /* vmulesw - v2.07 */ + case AVMULOSW: + return OPVX(4, 392, 0, 0) /* vmulosw - v2.07 */ + case AVMULEUW: + return OPVX(4, 648, 0, 0) /* vmuleuw - v2.07 */ + case AVMULOUW: + return OPVX(4, 136, 0, 0) /* vmulouw - v2.07 */ + case AVMULUWM: + return OPVX(4, 137, 0, 0) /* vmuluwm - v2.07 */ + case AVPMSUMB: return OPVX(4, 1032, 0, 0) /* vpmsumb - v2.07 */ case AVPMSUMH: |
