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 Arm SVE 8-wide (256b) implementation #480

Merged
merged 4 commits into from
Aug 5, 2024
Merged

Add Arm SVE 8-wide (256b) implementation #480

merged 4 commits into from
Aug 5, 2024

Conversation

solidpixel
Copy link
Contributor

@solidpixel solidpixel commented Jul 2, 2024

This PR adds support for Arm SVE via a fixed-width 256-bit implementation, as well as extending the fixed-width 128-bit implementation (which is mostly NEON) with a few targeted SVE operations such as native gathers.

Due to the style of 128-bit accumulator we use for floating-point invariance, it's not really possible to write a true vector-length-agnostic SVE implementation, so this implementation is a compile-time choice that will only work on 256b SVE implementations.

On a Neoverse V1 this code is ~30% faster than the equivalent NEON build.

@solidpixel solidpixel added this to the 4.9.0 milestone Jul 2, 2024
@solidpixel solidpixel self-assigned this Jul 2, 2024
@solidpixel
Copy link
Contributor Author

This should check SVE width at runtime and error. As with other ISA checks that is done in the CLI front-end, and not in the library.

@solidpixel
Copy link
Contributor Author

SVE runtime checks now added.

@solidpixel solidpixel force-pushed the sve_support branch 4 times, most recently from f1f6c04 to b9216ca Compare August 1, 2024 12:10
Source/astcenc_vecmathlib.h Outdated Show resolved Hide resolved
Source/astcenc_vecmathlib_neon_4.h Outdated Show resolved Hide resolved
Source/astcenccli_entry.cpp Outdated Show resolved Hide resolved
@solidpixel
Copy link
Contributor Author

Confirmed passes all tests on V1 (as we can't test SVE using GH actions).

@solidpixel solidpixel merged commit 213d6c2 into main Aug 5, 2024
4 checks passed
@solidpixel solidpixel deleted the sve_support branch August 5, 2024 09:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants