-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
ARM64EC: What even is it? #2740
Comments
I believe this MS docs page should answer a lot of questions: Understanding Arm64EC ABI and assembly code |
Nicole's understanding of the situation from discussions over coffee:
Also useful page: https://docs.microsoft.com/en-us/windows/arm/arm64ec-abi |
I believe that ARM64 intrinsics should be available, and run natively on the processor. I'm not sure if x64 intrinsics are available, but if they are they definitely are emulated (or the compiler could convert the intrinsic to a native ARM64 instruction under the hood) |
And from discussion with Pranav (backend person who works with arm64EC):
|
We already know that it is not true because simulation fails. @cbezault may recall more. |
At least these are completely missing: #2635 (comment) |
We should probably prefer NEON instructions here instead of emulated x86 SSE/AVX instructions |
It really depends. At least in my observations running the emulated intrinsics can actually be faster if you're already in emulated code. (You're running x64 code on an ARM64 machine). ARM64EC lets you jump back and forth between ARM64 native code and emulated x64 code. |
There's also a text file in the msvc linker directory that has a pretty good explanation of the symbol naming conventions and how symbols are selected. src/vctools/Link/doc/Arm64ECLinking.md |
Wow, that has a ton of useful information. |
In addition to the four major architectures (x86, x64, ARM, ARM64), we support CHPE and ARM64EC. In particular, ARM64EC is both a priority and actively evolving. However, as library devs, we have a highly incomplete and confused understanding of how this works. It would be extremely helpful to have documentation (either on Microsoft Docs or just on the STL Wiki) explaining a few important things for library devs. In particular:
I recall getting some answers to these questions in various emails but have forgotten, so having a single up-to-date reference would be very helpful.
The text was updated successfully, but these errors were encountered: