aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/asm/internal
diff options
context:
space:
mode:
authorGuoqi Chen <chenguoqi@loongson.cn>2025-05-15 15:21:06 +0800
committerabner chenc <chenguoqi@loongson.cn>2025-05-15 22:00:16 -0700
commit045b5c1bfb4535dc8149d93efec1f6412f5ccdae (patch)
treea3e7d2144f01ba8cdf39a5e4a0e1e994bd154800 /src/cmd/asm/internal
parent4b5a64f467f20b70373979d85c1358ac8af64411 (diff)
downloadgo-045b5c1bfb4535dc8149d93efec1f6412f5ccdae.tar.xz
cmd/internal/obj/loong64: change the plan9 format of the prefetch instruction PRELDX
before: MOVV $n + $offset, Roff PRELDX (Rbase)(Roff), $hint after: PRELDX offset(Rbase), $n, $hint This instruction is supported in CL 671875, but is not actually used Change-Id: I943d488ea6dc77781cd796ef480a89fede666bab Reviewed-on: https://go-review.googlesource.com/c/go/+/673155 Reviewed-by: Meidan Li <limeidan@loongson.cn> Reviewed-by: sophie zhao <zhaoxiaolin@loongson.cn> Reviewed-by: Michael Knyszek <mknyszek@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
Diffstat (limited to 'src/cmd/asm/internal')
-rw-r--r--src/cmd/asm/internal/asm/asm.go5
-rw-r--r--src/cmd/asm/internal/asm/testdata/loong64enc1.s3
-rw-r--r--src/cmd/asm/internal/asm/testdata/loong64enc5.s5
3 files changed, 10 insertions, 3 deletions
diff --git a/src/cmd/asm/internal/asm/asm.go b/src/cmd/asm/internal/asm/asm.go
index c8ad5d28e1..9a6e22cab2 100644
--- a/src/cmd/asm/internal/asm/asm.go
+++ b/src/cmd/asm/internal/asm/asm.go
@@ -676,6 +676,11 @@ func (p *Parser) asmInstruction(op obj.As, cond string, a []obj.Addr) {
prog.From = a[0]
prog.To = a[1]
prog.RegTo2 = a[2].Reg
+
+ case arch.IsLoong64PRELD(op):
+ prog.From = a[0]
+ prog.AddRestSourceArgs([]obj.Addr{a[1], a[2]})
+
default:
prog.From = a[0]
prog.Reg = p.getRegister(prog, op, &a[1])
diff --git a/src/cmd/asm/internal/asm/testdata/loong64enc1.s b/src/cmd/asm/internal/asm/testdata/loong64enc1.s
index d5e9b6c899..bfff555782 100644
--- a/src/cmd/asm/internal/asm/testdata/loong64enc1.s
+++ b/src/cmd/asm/internal/asm/testdata/loong64enc1.s
@@ -1035,6 +1035,3 @@ lable2:
PRELD (R4), $0 // 8000c02a
PRELD -1(R4), $8 // 88fcff2a
PRELD 8(R4), $31 // 9f20c02a
- PRELDX (R4)(R5), $0 // 80142c38
- PRELDX (R4)(R6), $8 // 88182c38
- PRELDX (R4)(R7), $31 // 9f1c2c38
diff --git a/src/cmd/asm/internal/asm/testdata/loong64enc5.s b/src/cmd/asm/internal/asm/testdata/loong64enc5.s
index 423e5c3b01..b7ecd6b63b 100644
--- a/src/cmd/asm/internal/asm/testdata/loong64enc5.s
+++ b/src/cmd/asm/internal/asm/testdata/loong64enc5.s
@@ -15,3 +15,8 @@ TEXT asmtest(SB),DUPOK|NOSPLIT,$0
AND $0xfedcba9876543210, R4 // AND $-81985529216486896, R4 // 7ea8ec14de4388031e539717deb73f0384f81400
AND $0xfedcba9876543210, R5, R4 // AND $-81985529216486896, R5, R4 // 7ea8ec14de4388031e539717deb73f03a4f81400
+ PRELDX 0(R7), $0x80001021, $0 // PRELDX (R7), $2147487777, $0 // 1e020014de0380031e000016de130003e0782c38
+ PRELDX -1(R7), $0x1021, $2 // PRELDX -1(R7), $4129, $2 // fe030014deffbf031e000016de030003e2782c38
+ PRELDX 8(R7), $0x80100800, $31 // PRELDX 8(R7), $2148534272, $31 // 1ee00714de238003fe1f0016de130003ff782c38
+ PRELDX 16(R7), $0x202040, $1 // PRELDX 16(R7), $2105408, $1 // 1e200014de4380033e000216de030003e1782c38
+