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/asm: Maintain power5 compatibility for ppc64 big endian #16004

Closed
laboger opened this issue Jun 8, 2016 · 4 comments
Closed

cmd/asm: Maintain power5 compatibility for ppc64 big endian #16004

laboger opened this issue Jun 8, 2016 · 4 comments
Milestone

Comments

@laboger
Copy link
Contributor

laboger commented Jun 8, 2016

Please answer these questions before submitting your issue. Thanks!

  1. What version of Go are you using (go version)?
    go1.7beta1
  2. What operating system and processor architecture are you using (go env)?
    ppc64 multiple OSes with instruction sets earlier than power8
  3. What did you do?
    If possible, provide a recipe for reproducing the error.
    A complete runnable program is good.
    A link on play.golang.org is best.
    Try to build golang on ppc64 with an instruction set earlier than power8
  4. What did you expect to see?
    Successful build.
  5. What did you see instead?
    SIGILL during the build on a power7 ppc64 system.

Some performance changes were added to go1.7 to improve performance for ppc64x, in some cases using instructions from power7 or power8 instruction sets. For ppc64le we want to use the newest instructions and get the best performance, but for ppc64 BE there are legacy systems with earlier instruction sets that want to be able to continue to build golang.

The two CLs that introduced newer instructions are 22772 and 22549. Those changes will be modified to generate legacy instructions for ppc64 BE and keep the newer instructions on ppc64le.

@ianlancetaylor ianlancetaylor added this to the Go1.7 milestone Jun 8, 2016
@ianlancetaylor
Copy link
Contributor

@laboger What is the status of this?

@laboger
Copy link
Contributor Author

laboger commented Jun 16, 2016

Working on it, I was out for a few days. I will submit my change shortly and I was hoping @mundaym would update CL 22772 as discussed in the mailing list.

@gopherbot
Copy link

CL https://golang.org/cl/24181 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/24191 mentions this issue.

gopherbot pushed a commit that referenced this issue Jun 17, 2016
Use the same technique as mips64 for these casts (CL 22835).

We could use the FCFIDU instruction for ppc64le however it seems
better to keep it the same as ppc64 for now.

Updates #15539, updates #16004.

Change-Id: I550680e485327568bf3238c4615a6cc8de6438d7
Reviewed-on: https://go-review.googlesource.com/24191
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Michael Munday <munday@ca.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
ceseo pushed a commit to powertechpreview/go that referenced this issue Jun 28, 2016
This modifies a recent performance improvement to the
And8 and Or8 atomic functions which required both ppc64le
and ppc64 to use power8 instructions. Since then it was
decided that ppc64 (BE) should work for power5 and later.
This change uses instructions compatible with power5 for
ppc64 and uses power8 for ppc64le.

Fixes golang#16004

Change-Id: I623c75e8e6fd1fa063a53d250d86cdc9d0890dc7
Reviewed-on: https://go-review.googlesource.com/24181
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Andrew Gerrand <adg@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
@golang golang locked and limited conversation to collaborators Jun 28, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants