aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/arm64/asm7.go
diff options
context:
space:
mode:
authoreric fang <eric.fang@arm.com>2022-01-05 09:20:06 +0000
committerEric Fang <eric.fang@arm.com>2022-01-17 09:23:25 +0000
commit897b3da2e079b9b940b309747305a5379fffa6ec (patch)
treeca48cbb2f1e03c0803243e1bda717c08e35db6cb /src/cmd/internal/obj/arm64/asm7.go
parent3b5eec937018be98549dea7067964018f0e5824c (diff)
downloadgo-897b3da2e079b9b940b309747305a5379fffa6ec.tar.gz
go-897b3da2e079b9b940b309747305a5379fffa6ec.zip
cmd/internal/obj/arm64: adjust rule for VMOVQ instruction
The VMOVQ instruction stores a 128-bit number into a V register, for example: VMOVQ $0x1122334455667788, $0x99aabbccddeeff00, V2 From a documentation (https://pkg.go.dev/cmd/internal/obj/arm64) point of view, the value in V2 should be 0x112233445566778899aabbccddeeff00, however the value is actually 0x99aabbccddeeff001122334455667788. The reason is that we misplaced the high 64-bit and the low 64-bit in the literal pool. To maintain backward compatibility, this CL adjusts the rule of VMOVQ instruction to make the documentation consistent with the code. Fixes #50528 Change-Id: Ib51f59e97c55252ab2a50bbc6ba4d430732a7a04 Reviewed-on: https://go-review.googlesource.com/c/go/+/377055 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Eric Fang <eric.fang@arm.com> Run-TryBot: Eric Fang <eric.fang@arm.com> Trust: Eric Fang <eric.fang@arm.com> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/cmd/internal/obj/arm64/asm7.go')
-rw-r--r--src/cmd/internal/obj/arm64/asm7.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/cmd/internal/obj/arm64/asm7.go b/src/cmd/internal/obj/arm64/asm7.go
index 68f0921d4d..f4111f4f5c 100644
--- a/src/cmd/internal/obj/arm64/asm7.go
+++ b/src/cmd/internal/obj/arm64/asm7.go
@@ -1184,7 +1184,7 @@ func (c *ctxt7) addpool128(p *obj.Prog, al, ah *obj.Addr) {
q := c.newprog()
q.As = ADWORD
q.To.Type = obj.TYPE_CONST
- q.To.Offset = al.Offset
+ q.To.Offset = al.Offset // q.Pc is lower than t.Pc, so al.Offset is stored in q.
t := c.newprog()
t.As = ADWORD