-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Change powerpc64 base CPU #59932
Comments
I think it would make sense to have a new |
The proposed change is only for the big-endian targets right? That is, the pp64le targets would still be compiled with altivec enabled right ? |
Yes, I am not proposing to change powerpc64le targets. |
Then this sounds good to me 👍 |
I would be fine with disabling altivec by default on both ppc64, because it is easier to enable it back for new binaries than to disable it for already-built ones. Removing |
@nagisa is there a group for packagers / distros contributors ? I think this would interest them, since the ppc targets are being shipped for some linux distros. |
By "both", do you mean ppc64le too? AFAIK little-endian only became a viable Linux target starting with POWER8, which definitely has Altivec. LLVM also defines the ppc64le CPU as POWER8.
It's easy to add features for your own code, but |
Yes. Then again, if ppc64le without altivec cannot possibly exist, then the lowest common denominator is good as well. Knowing PPC, though, you can run most of the chips in either endianess.
On one hand you’re right, on the other most of |
I don't know the full details, but this IBM FAQ says:
|
Personally over here at Adélie we only ship BE PPC64, and we enable AltiVec in all of our packages. We may, in the future, offer a separate target for non-AltiVec PPC64 machines. I would definitely support Rust targeting more types of POWER, and I know the FreeBSD people specifically support the e5500s. As an aside: IBM's really unreliable for endian questions. You can run BE on any generation of POWER, and you can run LE on most generations of POWER. You can even run accelerated LE in KVM on the Power Mac G5, though the firmware itself prevents bare metal LE mode. Not that I really recommend that; BE mode is faster, better, and easier to debug (biased opinion, of course). |
@lu-zero correctly pointed out that we currently do also enable VSX for ppc64le. |
Any movement on this? |
Power8 fully supports little-endian mode, while Power7 partially supports it. In LLVM little-endian powerpc defaults to Power8, big-endian powerpc defaults to Power7. In theory, a Power8 target can still have no Altivec/VSX support because it can be disabled. I'm curious: isn't directly disabling vector feature or changing |
No, because prebuilt std is built with Altivec, disabling Altivec from command line does not work. |
If altivec is disabled in building |
Currently, following targets use “ppc64” as base CPU: powerpc64-unknown-linux-gnu, powerpc64-unknown-linux-musl, powerpc64-unknown-freebsd.
In LLVM, “ppc64” implies “+altivec”. This is unfortunate, because it means Rust targets are unusable on devices based on PowerPC e5500, which is fairly popular. In particular, #43610 is about QorIQ P5040 SoC using PowerPC e5500 core, and #59040 is about QorIQ T1042 SoC using PowerPC e5500 core.
Thoughts?
The text was updated successfully, but these errors were encountered: