aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj
diff options
context:
space:
mode:
authorSrinivas Pokala <Pokala.Srinivas@ibm.com>2023-06-14 07:13:37 +0200
committerDavid Chase <drchase@google.com>2023-08-11 20:48:28 +0000
commit61719e18f7715e4fbd0914395633b15a4a2e17a7 (patch)
treef3fceb3df264cfe483e67dc0d462da34d48b98b9 /src/cmd/internal/obj
parent727ebce6ce4fab9aeb089f89d5c4b32bb69be403 (diff)
downloadgo-61719e18f7715e4fbd0914395633b15a4a2e17a7.tar.xz
cmd/asm: add KDSA instruction support
KDSA(Compute Digital Signature Authentication) instruction provides support for the signing and verification of elliptic curves Change-Id: I19996a307162dd4f476a1cfe4f8d1a74a609e6c1 Reviewed-on: https://go-review.googlesource.com/c/go/+/503215 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/cmd/internal/obj')
-rw-r--r--src/cmd/internal/obj/s390x/a.out.go1
-rw-r--r--src/cmd/internal/obj/s390x/anames.go1
-rw-r--r--src/cmd/internal/obj/s390x/asmz.go17
3 files changed, 19 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/s390x/a.out.go b/src/cmd/internal/obj/s390x/a.out.go
index 0b1aa5af16..ef02fed283 100644
--- a/src/cmd/internal/obj/s390x/a.out.go
+++ b/src/cmd/internal/obj/s390x/a.out.go
@@ -485,6 +485,7 @@ const (
AKMC
AKLMD
AKIMD
+ AKDSA
// vector
AVA
diff --git a/src/cmd/internal/obj/s390x/anames.go b/src/cmd/internal/obj/s390x/anames.go
index d5f5f343e3..40cc5e6b0d 100644
--- a/src/cmd/internal/obj/s390x/anames.go
+++ b/src/cmd/internal/obj/s390x/anames.go
@@ -211,6 +211,7 @@ var Anames = []string{
"KMC",
"KLMD",
"KIMD",
+ "KDSA",
"VA",
"VAB",
"VAH",
diff --git a/src/cmd/internal/obj/s390x/asmz.go b/src/cmd/internal/obj/s390x/asmz.go
index 81e7a2d62e..a744d742cf 100644
--- a/src/cmd/internal/obj/s390x/asmz.go
+++ b/src/cmd/internal/obj/s390x/asmz.go
@@ -344,6 +344,9 @@ var optab = []Optab{
// KM
{i: 124, as: AKM, a1: C_REG, a6: C_REG},
+ // KDSA
+ {i: 125, as: AKDSA, a1: C_REG, a6: C_REG},
+
// vector instructions
// VRX store
@@ -2638,6 +2641,10 @@ const (
op_VUPLL uint32 = 0xE7D4 // VRR-a VECTOR UNPACK LOGICAL LOW
op_VUPL uint32 = 0xE7D6 // VRR-a VECTOR UNPACK LOW
op_VMSL uint32 = 0xE7B8 // VRR-d VECTOR MULTIPLY SUM LOGICAL
+
+ // added in z15
+ op_KDSA uint32 = 0xB93A // FORMAT_RRE COMPUTE DIGITAL SIGNATURE AUTHENTICATION (KDSA)
+
)
func oclass(a *obj.Addr) int {
@@ -4411,6 +4418,16 @@ func (c *ctxtz) asmout(p *obj.Prog, asm *[]byte) {
opcode = op_KIMD
}
zRRE(opcode, uint32(p.From.Reg), uint32(p.To.Reg), asm)
+
+ case 125: // KDSA sign and verify
+ if p.To.Reg == REG_R0 {
+ c.ctxt.Diag("second argument must not be R0 in %v", p)
+ }
+ if p.To.Reg&1 != 0 {
+ c.ctxt.Diag("second argument must be an even register in %v", p)
+ }
+ zRRE(op_KDSA, uint32(p.From.Reg), uint32(p.To.Reg), asm)
+
}
}