aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj
diff options
context:
space:
mode:
authorQiu Weihong <953950914@qq.com>2025-09-24 17:03:40 +0800
committerJoel Sing <joel@sing.id.au>2026-04-03 22:25:40 -0700
commit081aa64e610b175e295159c2117f25ecf49953ed (patch)
tree60abf845aa8b61e6a0f4aef58d7bfa56d753ff3c /src/cmd/internal/obj
parent2a902c8a8a37935abc4adc93605276c9d2103e45 (diff)
downloadgo-081aa64e610b175e295159c2117f25ecf49953ed.tar.xz
cmd/internal/obj/riscv: add assembly support for Zihintpause extensions
Add support for the PAUSE instruction provided by the Zihintpause extension. Change-Id: If06cce4ca57137275f567b5fe29ef85517f381ef Reviewed-on: https://go-review.googlesource.com/c/go/+/710495 Reviewed-by: Joel Sing <joel@sing.id.au> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Junyang Shao <shaojunyang@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/cmd/internal/obj')
-rw-r--r--src/cmd/internal/obj/riscv/anames.go1
-rw-r--r--src/cmd/internal/obj/riscv/cpu.go1
-rw-r--r--src/cmd/internal/obj/riscv/obj.go4
3 files changed, 6 insertions, 0 deletions
diff --git a/src/cmd/internal/obj/riscv/anames.go b/src/cmd/internal/obj/riscv/anames.go
index 1f777dd195..9bc4ac4725 100644
--- a/src/cmd/internal/obj/riscv/anames.go
+++ b/src/cmd/internal/obj/riscv/anames.go
@@ -939,6 +939,7 @@ var Anames = []string{
"NEG",
"NEGW",
"NOT",
+ "PAUSE",
"RDCYCLE",
"RDINSTRET",
"RDTIME",
diff --git a/src/cmd/internal/obj/riscv/cpu.go b/src/cmd/internal/obj/riscv/cpu.go
index 433c8e1e89..8112c56ee0 100644
--- a/src/cmd/internal/obj/riscv/cpu.go
+++ b/src/cmd/internal/obj/riscv/cpu.go
@@ -1508,6 +1508,7 @@ const (
ANEG
ANEGW
ANOT
+ APAUSE
ARDCYCLE
ARDINSTRET
ARDTIME
diff --git a/src/cmd/internal/obj/riscv/obj.go b/src/cmd/internal/obj/riscv/obj.go
index 50c687f722..332df52f87 100644
--- a/src/cmd/internal/obj/riscv/obj.go
+++ b/src/cmd/internal/obj/riscv/obj.go
@@ -4421,6 +4421,10 @@ func instructionsForProg(p *obj.Prog, compress bool) []*instruction {
ins.imm = int64((pred << 4) | succ)
}
+ case APAUSE:
+ ins.as, ins.rd, ins.rs1, ins.rs2 = AFENCE, REG_ZERO, REG_ZERO, obj.REG_NONE
+ ins.imm = 0x010
+
case AFCVTWS, AFCVTLS, AFCVTWUS, AFCVTLUS, AFCVTWD, AFCVTLD, AFCVTWUD, AFCVTLUD:
// Set the default rounding mode in funct3 to round to zero.
if p.Scond&rmSuffixBit == 0 {