mirror of
https://github.com/golang/go
synced 2024-11-26 19:41:19 -07:00
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: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
This commit is contained in:
parent
9aadbf5755
commit
048580d341
1
src/cmd/asm/internal/asm/testdata/ppc64.s
vendored
1
src/cmd/asm/internal/asm/testdata/ppc64.s
vendored
@ -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 (
|
|||||||
AVCMPNEZB
|
AVCMPNEZB
|
||||||
AVCMPNEZBCC
|
AVCMPNEZBCC
|
||||||
AVPERM
|
AVPERM
|
||||||
|
AVPERMXOR
|
||||||
AVBPERMQ
|
AVBPERMQ
|
||||||
AVBPERMD
|
AVBPERMD
|
||||||
AVSEL
|
AVSEL
|
||||||
|
@ -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) {
|
|||||||
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 {
|
|||||||
|
|
||||||
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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user