diff options
| author | Joel Sing <joel@sing.id.au> | 2023-04-07 06:15:59 +1000 |
|---|---|---|
| committer | Joel Sing <joel@sing.id.au> | 2023-04-11 18:32:50 +0000 |
| commit | 05cd6cbb98a78f04fcfe018527fc8a50364bd0ee (patch) | |
| tree | ada47d4e5878ead735b6c428720ceffc28a5ab0c /src/cmd/internal/obj/x86 | |
| parent | 0d82f584c223fb045496f3e063bf93416a24e0b0 (diff) | |
| download | go-05cd6cbb98a78f04fcfe018527fc8a50364bd0ee.tar.xz | |
cmd/asm,cmd/internal/obj/x86: add RDPID instruction to x86 assembler
Add support for the Read Processor ID (RDPID) instruction to the x86
assembler. This returns the current logical processor's ID in the
specified register, as a faster alternative to RDTSCP.
Fixes #56525
Change-Id: I43482e42431dfc385ce2e7f6d44b9746b0cc4548
Reviewed-on: https://go-review.googlesource.com/c/go/+/482955
Run-TryBot: Joel Sing <joel@sing.id.au>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Diffstat (limited to 'src/cmd/internal/obj/x86')
| -rw-r--r-- | src/cmd/internal/obj/x86/aenum.go | 1 | ||||
| -rw-r--r-- | src/cmd/internal/obj/x86/anames.go | 1 | ||||
| -rw-r--r-- | src/cmd/internal/obj/x86/asm6.go | 3 | ||||
| -rw-r--r-- | src/cmd/internal/obj/x86/obj6.go | 1 |
4 files changed, 5 insertions, 1 deletions
diff --git a/src/cmd/internal/obj/x86/aenum.go b/src/cmd/internal/obj/x86/aenum.go index f0913d7c55..79cdd241a2 100644 --- a/src/cmd/internal/obj/x86/aenum.go +++ b/src/cmd/internal/obj/x86/aenum.go @@ -747,6 +747,7 @@ const ( ARDGSBASEL ARDGSBASEQ ARDMSR + ARDPID ARDPKRU ARDPMC ARDRANDL diff --git a/src/cmd/internal/obj/x86/anames.go b/src/cmd/internal/obj/x86/anames.go index 7869e366f9..3966381e50 100644 --- a/src/cmd/internal/obj/x86/anames.go +++ b/src/cmd/internal/obj/x86/anames.go @@ -745,6 +745,7 @@ var Anames = []string{ "RDGSBASEL", "RDGSBASEQ", "RDMSR", + "RDPID", "RDPKRU", "RDPMC", "RDRANDL", diff --git a/src/cmd/internal/obj/x86/asm6.go b/src/cmd/internal/obj/x86/asm6.go index 0e8670c8e5..718da6a8a2 100644 --- a/src/cmd/internal/obj/x86/asm6.go +++ b/src/cmd/internal/obj/x86/asm6.go @@ -775,7 +775,7 @@ var ymshufb = []ytab{ } // It should never have more than 1 entry, -// because some optab entries you opcode secuences that +// because some optab entries have opcode sequences that // are longer than 2 bytes (zoffset=2 here), // ROUNDPD and ROUNDPS and recently added BLENDPD, // to name a few. @@ -1774,6 +1774,7 @@ var optab = {ALSSW, ym_rl, Pe, opBytes{0x0f, 0xb2}}, {ALSSL, ym_rl, Px, opBytes{0x0f, 0xb2}}, {ALSSQ, ym_rl, Pw, opBytes{0x0f, 0xb2}}, + {ARDPID, yrdrand, Pf3, opBytes{0xc7, 07}}, {ABLENDPD, yxshuf, Pq, opBytes{0x3a, 0x0d, 0}}, {ABLENDPS, yxshuf, Pq, opBytes{0x3a, 0x0c, 0}}, diff --git a/src/cmd/internal/obj/x86/obj6.go b/src/cmd/internal/obj/x86/obj6.go index c85b5018eb..8c9ea4f2a9 100644 --- a/src/cmd/internal/obj/x86/obj6.go +++ b/src/cmd/internal/obj/x86/obj6.go @@ -1476,6 +1476,7 @@ var unaryDst = map[obj.As]bool{ ARDFSBASEQ: true, ARDGSBASEL: true, ARDGSBASEQ: true, + ARDPID: true, ARDRANDL: true, ARDRANDQ: true, ARDRANDW: true, |
