-
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
Support 128-bit atomics on x86_64-fortanix-unknown-sgx #130552
base: master
Are you sure you want to change the base?
Conversation
r? @wesleywiser rustbot has assigned @wesleywiser. Use |
These commits modify compiler targets. |
Yes SGX is generally considered Intel-specific. If you could point to where in the Intel documentation it talks about 128-bit atomics always being supported, that would be helpful. |
Sorry, I do not know of any Intel documentation that explains this. I mainly referred to the following three resources:
|
Ah, "CMPXCHG8B/CMPXCHG16B—Compare and Exchange Bytes" section in Intel 64 and IA-32 Architectures Software Developer’s Manual says CMPXCHG16B in 64-Bit Mode is "Valid". (When it is not available on older CPUs, such as CMPXCHG8B/CMPXCHG in Compat/Leg Mode, it has annotation about compatibility -- they are "Valid*" not "Valid" and have "IA-32 Architecture Compatibility" sections that say "not supported on Intel processors earlier than ...".) EDIT: I missed exceptions sections #130552 (comment) |
Just the “valid” note is not sufficient. In the instruction description under 64-mode exceptions, it says:
Which indicates that CPU support is not guaranteed in general. |
Based on my comment in #99069 (comment):
cc @jethrogb: Is it okay to have the above assumptions for this target? (Or is this target intentionally not currently enabling cx16 for some reason?)