Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/internal/obj/mips: load/store even float registers first [1.10 backport] #24995

Closed
mwhudson opened this issue Apr 22, 2018 · 3 comments
Closed
Labels
CherryPickApproved Used during the release process for point releases FrozenDueToAge
Milestone

Comments

@mwhudson
Copy link
Contributor

https://go-review.googlesource.com/c/go/+/97735 should be considered for backport to 1.10, as it is still causing problems building go 1.10.1 on mips in Debian.

@mwhudson mwhudson added the CherryPickCandidate Used during the release process for point releases label Apr 22, 2018
@mwhudson mwhudson added this to the Go1.10.2 milestone Apr 22, 2018
@andybons
Copy link
Member

@ianlancetaylor objections to cherry-pick?

@ianlancetaylor
Copy link
Contributor

I'm OK with a cherry-pick.

@andybons andybons added CherryPickApproved Used during the release process for point releases and removed CherryPickCandidate Used during the release process for point releases labels Apr 27, 2018
@gopherbot
Copy link

Change https://golang.org/cl/110078 mentions this issue: [release-branch.go1.10] cmd/internal/obj/mips: load/store even float registers first

gopherbot pushed a commit that referenced this issue Apr 28, 2018
…registers first

There is a bug in Octeon III processors where storing an odd floating
point register after it has recently been written to by a double
floating point operation will store the old value from before the double
operation (there are some extra details - the operation and store
must be a certain number of cycles apart). However, this bug does not
occur if the even register is stored first. Currently the bug only
happens on big endian because go always loads the even register first on
little endian.

Workaround the bug by always loading / storing the even floating point
register first. Since this is just an instruction reordering, it should
have no performance penalty. This follows other compilers like GCC which
will always store the even register first (although you do have to set
the ISA level to MIPS I to prevent it from using SDC1).

Fixes #24995

Change-Id: I5e73daa4d724ca1df7bf5228aab19f53f26a4976
Reviewed-on: https://go-review.googlesource.com/97735
Reviewed-by: Keith Randall <khr@golang.org>
(cherry picked from commit 4231110)
Reviewed-on: https://go-review.googlesource.com/110078
Run-TryBot: Andrew Bonventre <andybons@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
@golang golang locked and limited conversation to collaborators Apr 30, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
CherryPickApproved Used during the release process for point releases FrozenDueToAge
Projects
None yet
Development

No branches or pull requests

4 participants