Skip to content

Commit 93eeb81

Browse files
mengzhuocherrymui
authored andcommitted
cmd/asm: Add SHA512 hardware instructions for ARM64
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 <[email protected]> Run-TryBot: Cherry Zhang <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent 20b4987 commit 93eeb81

File tree

4 files changed

+28
-0
lines changed

4 files changed

+28
-0
lines changed

src/cmd/asm/internal/asm/testdata/arm64.s

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
7777
SHA1H V5, V4 // a408285e
7878
SHA1M V8.S4, V7, V6 // e620085e
7979
SHA1P V11.S4, V10, V9 // 49110b5e
80+
SHA512H V2.D2, V1, V0 // 208062ce
81+
SHA512H2 V4.D2, V3, V2 // 628464ce
82+
SHA512SU0 V9.D2, V8.D2 // 2881c0ce
83+
SHA512SU1 V7.D2, V6.D2, V5.D2 // c58867ce
8084
VADDV V0.S4, V0 // 00b8b14e
8185
VMOVI $82, V0.B16 // 40e6024f
8286
VUADDLV V6.B16, V6 // c638306e

src/cmd/internal/obj/arm64/a.out.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -946,6 +946,10 @@ const (
946946
ASHA256H2
947947
ASHA256SU0
948948
ASHA256SU1
949+
ASHA512H
950+
ASHA512H2
951+
ASHA512SU0
952+
ASHA512SU1
949953
AVADD
950954
AVADDP
951955
AVAND

src/cmd/internal/obj/arm64/anames.go

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/cmd/internal/obj/arm64/asm7.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2747,16 +2747,20 @@ func buildop(ctxt *obj.Link) {
27472747
oprangeset(AAESIMC, t)
27482748
oprangeset(ASHA1SU1, t)
27492749
oprangeset(ASHA256SU0, t)
2750+
oprangeset(ASHA512SU0, t)
27502751

27512752
case ASHA1C:
27522753
oprangeset(ASHA1P, t)
27532754
oprangeset(ASHA1M, t)
27542755

27552756
case ASHA256H:
27562757
oprangeset(ASHA256H2, t)
2758+
oprangeset(ASHA512H, t)
2759+
oprangeset(ASHA512H2, t)
27572760

27582761
case ASHA1SU0:
27592762
oprangeset(ASHA256SU1, t)
2763+
oprangeset(ASHA512SU1, t)
27602764

27612765
case AVADDV:
27622766
oprangeset(AVUADDLV, t)
@@ -5391,6 +5395,18 @@ func (c *ctxt7) oprrr(p *obj.Prog, a obj.As) uint32 {
53915395
case ASHA256SU0:
53925396
return 0x5E<<24 | 2<<20 | 8<<16 | 2<<12 | 2<<10
53935397

5398+
case ASHA512H:
5399+
return 0xCE<<24 | 3<<21 | 8<<12
5400+
5401+
case ASHA512H2:
5402+
return 0xCE<<24 | 3<<21 | 8<<12 | 4<<8
5403+
5404+
case ASHA512SU1:
5405+
return 0xCE<<24 | 3<<21 | 8<<12 | 8<<8
5406+
5407+
case ASHA512SU0:
5408+
return 0xCE<<24 | 3<<22 | 8<<12
5409+
53945410
case AFCVTZSD:
53955411
return FPCVTI(1, 0, 1, 3, 0)
53965412

0 commit comments

Comments
 (0)