Commit 048580d3 authored by Lynn Boger's avatar Lynn Boger

cmd/asm,cmd/internal/obj/ppc64: add VPERMXOR to ppc64 assembler

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: default avatarCarlos Eduardo Seo <cseo@linux.vnet.ibm.com>
parent 9aadbf57
...@@ -948,6 +948,7 @@ label1: ...@@ -948,6 +948,7 @@ label1:
// <MNEMONIC> VRA,VRB,VRC,VRT produces // <MNEMONIC> VRA,VRB,VRC,VRT produces
// <mnemonic> VRT,VRA,VRB,VRC // <mnemonic> VRT,VRA,VRB,VRC
VPERM V3, V2, V1, V0 VPERM V3, V2, V1, V0
VPERMXOR V3, V2, V1, V0
// Vector bit permute, VX-form // Vector bit permute, VX-form
// <MNEMONIC> VRA,VRB,VRT produces // <MNEMONIC> VRA,VRB,VRT produces
......
...@@ -903,6 +903,7 @@ const ( ...@@ -903,6 +903,7 @@ const (
AVCMPNEZB AVCMPNEZB
AVCMPNEZBCC AVCMPNEZBCC
AVPERM AVPERM
AVPERMXOR
AVBPERMQ AVBPERMQ
AVBPERMD AVBPERMD
AVSEL AVSEL
......
...@@ -493,6 +493,7 @@ var Anames = []string{ ...@@ -493,6 +493,7 @@ var Anames = []string{
"VCMPNEZB", "VCMPNEZB",
"VCMPNEZBCC", "VCMPNEZBCC",
"VPERM", "VPERM",
"VPERMXOR",
"VBPERMQ", "VBPERMQ",
"VBPERMD", "VBPERMD",
"VSEL", "VSEL",
......
...@@ -1498,7 +1498,7 @@ func buildop(ctxt *obj.Link) { ...@@ -1498,7 +1498,7 @@ func buildop(ctxt *obj.Link) {
opset(AVCMPNEZBCC, r0) opset(AVCMPNEZBCC, r0)
case AVPERM: /* vperm */ case AVPERM: /* vperm */
opset(AVPERM, r0) opset(AVPERMXOR, r0)
case AVBPERMQ: /* vbpermq, vbpermd */ case AVBPERMQ: /* vbpermq, vbpermd */
opset(AVBPERMD, r0) opset(AVBPERMD, r0)
...@@ -4503,6 +4503,8 @@ func (c *ctxt9) oprrr(a obj.As) uint32 { ...@@ -4503,6 +4503,8 @@ func (c *ctxt9) oprrr(a obj.As) uint32 {
case AVPERM: case AVPERM:
return OPVX(4, 43, 0, 0) /* vperm - v2.03 */ return OPVX(4, 43, 0, 0) /* vperm - v2.03 */
case AVPERMXOR:
return OPVX(4, 45, 0, 0) /* vpermxor - v2.03 */
case AVSEL: case AVSEL:
return OPVX(4, 42, 0, 0) /* vsel - v2.03 */ return OPVX(4, 42, 0, 0) /* vsel - v2.03 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment