]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm: Add SHA512 hardware instructions for ARM64
authorMeng Zhuo <mengzhuo1203@gmail.com>
Mon, 8 Jun 2020 05:58:53 +0000 (13:58 +0800)
committerCherry Zhang <cherryyz@google.com>
Tue, 18 Aug 2020 17:30:53 +0000 (17:30 +0000)
ARMv8.2-SHA add SHA512 intructions:

1. SHA512H Vm.D2, Vn, Vd
2. SHA512H2 Vm.D2, Vn, Vd
3. SHA512SU0 Vn.D2, Vd.D2
4. SHA512SU1 Vm.D2, Vn.D2, Vd.D2

ARMv8 Architecture Reference Manual C7.2.234-C7.2.234

Change-Id: Ie970fef1bba5312ad466f246035da4c40a1bbb39
Reviewed-on: https://go-review.googlesource.com/c/go/+/180057
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/asm/internal/asm/testdata/arm64.s
src/cmd/internal/obj/arm64/a.out.go
src/cmd/internal/obj/arm64/anames.go
src/cmd/internal/obj/arm64/asm7.go

index 69267bfa63ad38b2a4736a234a8ca1d20ade41dd..5a6db0507431b0ce1c16a82046e2e17899d7d008 100644 (file)
@@ -77,6 +77,10 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
        SHA1H   V5, V4                          // a408285e
        SHA1M   V8.S4, V7, V6                   // e620085e
        SHA1P   V11.S4, V10, V9                 // 49110b5e
+       SHA512H V2.D2, V1, V0                   // 208062ce
+       SHA512H2        V4.D2, V3, V2           // 628464ce
+       SHA512SU0       V9.D2, V8.D2            // 2881c0ce
+       SHA512SU1       V7.D2, V6.D2, V5.D2     // c58867ce
        VADDV   V0.S4, V0                       // 00b8b14e
        VMOVI   $82, V0.B16                     // 40e6024f
        VUADDLV V6.B16, V6                      // c638306e
index 152c493a6598f5e08394a07778b39ef95b30fa0b..03e0278a33eae47524e66100194fb9313c07b357 100644 (file)
@@ -946,6 +946,10 @@ const (
        ASHA256H2
        ASHA256SU0
        ASHA256SU1
+       ASHA512H
+       ASHA512H2
+       ASHA512SU0
+       ASHA512SU1
        AVADD
        AVADDP
        AVAND
index 565f70aaf939c4e39977b1c89c7ee80e9ab3cb90..65ecd007ea35c2e57c37e3c99c23ca8f28227992 100644 (file)
@@ -453,6 +453,10 @@ var Anames = []string{
        "SHA256H2",
        "SHA256SU0",
        "SHA256SU1",
+       "SHA512H",
+       "SHA512H2",
+       "SHA512SU0",
+       "SHA512SU1",
        "VADD",
        "VADDP",
        "VAND",
index df17729a7650f58171644758f2f00da6f71ca289..8f8981479b88c05651850f92f895d7675e127b30 100644 (file)
@@ -2747,6 +2747,7 @@ func buildop(ctxt *obj.Link) {
                        oprangeset(AAESIMC, t)
                        oprangeset(ASHA1SU1, t)
                        oprangeset(ASHA256SU0, t)
+                       oprangeset(ASHA512SU0, t)
 
                case ASHA1C:
                        oprangeset(ASHA1P, t)
@@ -2754,9 +2755,12 @@ func buildop(ctxt *obj.Link) {
 
                case ASHA256H:
                        oprangeset(ASHA256H2, t)
+                       oprangeset(ASHA512H, t)
+                       oprangeset(ASHA512H2, t)
 
                case ASHA1SU0:
                        oprangeset(ASHA256SU1, t)
+                       oprangeset(ASHA512SU1, t)
 
                case AVADDV:
                        oprangeset(AVUADDLV, t)
@@ -5391,6 +5395,18 @@ func (c *ctxt7) oprrr(p *obj.Prog, a obj.As) uint32 {
        case ASHA256SU0:
                return 0x5E<<24 | 2<<20 | 8<<16 | 2<<12 | 2<<10
 
+       case ASHA512H:
+               return 0xCE<<24 | 3<<21 | 8<<12
+
+       case ASHA512H2:
+               return 0xCE<<24 | 3<<21 | 8<<12 | 4<<8
+
+       case ASHA512SU1:
+               return 0xCE<<24 | 3<<21 | 8<<12 | 8<<8
+
+       case ASHA512SU0:
+               return 0xCE<<24 | 3<<22 | 8<<12
+
        case AFCVTZSD:
                return FPCVTI(1, 0, 1, 3, 0)