diff options
| author | Guoqi Chen <chenguoqi@loongson.cn> | 2025-05-15 15:21:06 +0800 |
|---|---|---|
| committer | abner chenc <chenguoqi@loongson.cn> | 2025-05-15 22:00:16 -0700 |
| commit | 045b5c1bfb4535dc8149d93efec1f6412f5ccdae (patch) | |
| tree | a3e7d2144f01ba8cdf39a5e4a0e1e994bd154800 /src/cmd/asm | |
| parent | 4b5a64f467f20b70373979d85c1358ac8af64411 (diff) | |
| download | go-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')
| -rw-r--r-- | src/cmd/asm/internal/asm/asm.go | 5 | ||||
| -rw-r--r-- | src/cmd/asm/internal/asm/testdata/loong64enc1.s | 3 | ||||
| -rw-r--r-- | src/cmd/asm/internal/asm/testdata/loong64enc5.s | 5 |
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 + |
