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/compile: add support for compiling without the MMX requirement on GOARCH=386 #37056
Comments
I think it might be better for https://github.com/tbodt/ish to implement MMX support in the CPU emulator, but in the meantime this would certainly be a welcome feature. |
Come to think of it, the Intel Quark does not have MMX support either, so this would allow support for golang on that. |
As far as I remember the fundamental reason why MMX is needed is that otherwise there is no fast/easy way to atomically write 64bit with non-mmx instructions that are part of x86. One can go through floating point load and stores but that requires making sure the floating point control has 64bit mantissas set. Im not sure go enforces/requires that. One can use In the era of P5 and P6 pentiums also the guarantees changed for aligned/unaligned 64bit load/store atomicity guarantees. P5 only supported atomicity on naturally aligned (64bit for 64bit int) load/stores. That however may not be an issue since I think all callers are required to use 64bit alignment already for runtime atomic. More practical problems: If its not implemented as an option it will likely slow down other x86 systems that have MMX. Is the maintenance burden supporting an extra option (running builders, code maintenance) worth the potential usage for the use case. Maybe gcc-go, tinygo are already better since they can also optimize for the specific cpu? |
/cc @randall77 @griesemer |
Is there a list of the MMX instructions that go uses? It's probably a much better idea to just implement those in iSH. |
ish-app/ish#57 has been closed by ish-app supporting MOVQ now: Can this issue be closed? |
Timed out in state WaitingForInfo. Closing. (I am just a bot, though. Please speak up if this is a mistake or you have the requested information.) |
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (
go env
)?go env
Output and architecture informationI am using https://github.com/tbodt/ish which emulates “more of a i486. No MMX support.”
What did you do?
I first discovered this as I attempted to install Keybase on https://github.com/tbodt/ish. However, it’s not actually a Keybase issue but rather a golang/iSH issue, as iSH does not implement the Pentium MMX Extensions, when golang compiled with $GO386=387 actually requires Pentium MMX extensions. ish-app/ish#57
ish-app/ish#618
The text was updated successfully, but these errors were encountered: