-
Notifications
You must be signed in to change notification settings - Fork 552
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
Add scatter/gather support for AArch64's Scalable Vector Extension (SVE) #5844
Comments
AVX-2 and AVX-512 scatter/gather expansion was implemented by @abhinav92003 and there is a doc here: https://dynamorio.org/page_scatter_gather_emulation.html Abhinav may have more to say as well. From my side: it is maybe surprisingly complex for originating from a single instruction, as the example expansions in that doc show, and you can see in the code the state restore is equally complex with a giant state machine. |
I think this is a dup of #5036 which has a bunch of observations |
This work is being done in #5844 Change-Id: Ie3c6b3da0785fc3caa34ce363f2d929687f527a6
The existing drx_expand_scatter_gather() function is > 2000 lines of code, including helper functions, and most of it is very x86 specific. In preparation for writing the AArch64 version of this function, this commit moves the x86 implementation of drx_expand_scatter_gather() out of drx.c into its own architecture specific files, and creates dummy implementations for other architectures. The behaviour of the function should be unchanged on all platforms. As we develop the AArch64 version of drx_expand_scatter_gather(), any parts of the original x86 implementation which are usefull to both can be pulled out into helper functions which are shared between both architectures. Issues: #5844, #5036, #3837
The existing drx_expand_scatter_gather() function is > 2000 lines of code, including helper functions, and most of it is very x86 specific. In preparation for writing the AArch64 version of this function, this commit moves the x86 implementation of drx_expand_scatter_gather() out of drx.c into its own architecture specific files, and creates dummy implementations for other architectures. The behaviour of the function should be unchanged on all platforms. As we develop the AArch64 version of drx_expand_scatter_gather(), any parts of the original x86 implementation which are usefull to both can be pulled out into helper functions which are shared between both architectures. Issues: #5844, #5036, #3837
This is temporary measure until #5844 is implemented. Change-Id: Iac82edc974435bfed9285a23988db159ea0d731d
Closing as duplicate as it is confusing having multiple issues on the same thing. |
We will shortly be upstreaming SVE scatter/gather instructions as part of AArch64 SVE codec and core/tools work (#5365, #3044). There are two aspects of this work:
opnd_create_base_disp_aarch64()
or a newopnd_create_base_disp_
function for SVE.In both cases we would like to be consistent with the design of the AVX512 IR API and emulation implementation, as much as possible. We would appreciate any advice on the best approach and the avoidance of pitfalls which you may have have encountered during your work on AVX512. As well as pointers to code which is relevant to and/or will help us with implementing for SVE.
The text was updated successfully, but these errors were encountered: