Skip to content
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 support for drx_expand_scatter_gather() and instr_is_{scatter,gather}() on AArch32 #3837

Closed
hgreving2304 opened this issue Sep 16, 2019 · 4 comments

Comments

@hgreving2304
Copy link

The functions instr_is_scatter() and instr_is_gather() will be added along with a patch shortly. This issue covers support for ARM/AArch64.

@derekbruening
Copy link
Contributor

This issue includes arm support for drx_expand_scatter_gather(), right? Maybe add that to the title.

@derekbruening
Copy link
Contributor

Xref #2985 which is the x86 issue.

@derekbruening derekbruening changed the title Add support for instr_is_scatter() and instr_is_gather() on ARM/AArch64. Add support for drx_expand_scatter_gather() and instr_is_{scatter,gather}() on ARM/AArch64. Sep 16, 2019
hgreving2304 pushed a commit that referenced this issue Sep 17, 2019
…o scalar sequences. (#3831)

Adds the function drx_expand_scatter_gather() that is capable of expanding
AVX-512 scatter and gather and AVX2 gather instructions into equivalent
sequences of scalar code.

WARNING: Do not use yet, support is incomplete.

In particular,

* Certain registers may be clobbered by the sequence and will not be restored.
* Application state may not be properly restored if the sequence is getting interrupted.
* drreg may fail if used in other phases in addition to app2app (xref #3823).

Furthermore,

* AArch64 support is missing (xref #3837).
* The qword index and value versions are not supported in 32-bit mode.

Adds a limited test for the expanded sequences. The test works with above limitations,
because the clobbered registers are not live in the test application and the application
does not check the mask state until the instruction is complete. In the test application
this may result in occasional duplicated scalar loads and stores, but will not break the
test.

Adds a check for the mask registers to test client.avx512ctx.

Issue: #2985, #3837
jackgallagher-arm added a commit that referenced this issue Jun 26, 2023
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
github-merge-queue bot pushed a commit that referenced this issue Jun 27, 2023
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
jackgallagher-arm added a commit that referenced this issue Aug 16, 2023
Creates an AArch64 version of drx_expand_scatter_gather() and unit tests
for it. So far only SVE scalar+vector loads are supported.
Support and tests for more instructions will follow in future commits.

Issues: #5844, #5036, #3837
@derekbruening derekbruening changed the title Add support for drx_expand_scatter_gather() and instr_is_{scatter,gather}() on ARM/AArch64. Add support for drx_expand_scatter_gather() and instr_is_{scatter,gather}() on AArch32 Aug 16, 2023
@derekbruening
Copy link
Contributor

This only covers AArch32; #5036 covers AArch64.

@derekbruening
Copy link
Contributor

Turns out there are not any AArch32 scatter-gather instructions so we're closing this and leaving just #5036 as it has more discussion/content.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants