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

aarch64: Support FEAT_LSE128 and FEAT_LRCPC3 #68

Merged
merged 2 commits into from
Aug 10, 2023
Merged

Conversation

taiki-e
Copy link
Owner

@taiki-e taiki-e commented Jan 30, 2023

armv9.4-a added the following instructions as FEAT_LSE128:

armv8.9-a/armv9.4-a added the following instructions as FEAT_LRCPC3:

This PR optimizes aarch64 128-bit acquire-load/release-store when FEAT_LSE2 and FEAT_LRCPC3 are enabled and optimizes aarch64 128-bit fetch_and/fetch_or/swap/{release,seqcst}-store when FEAT_LSE128 is enabled.

See also the relevant LLVM patches: D141406 (FEAT_LSE128), D141429 (FEAT_LRCPC3)), D143506

This PR is still marked as a draft because:

cc #10

@taiki-e taiki-e added the O-arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state label Jan 30, 2023
@taiki-e taiki-e force-pushed the aarch64-lse128 branch 2 times, most recently from 1a1baba to 9fd4110 Compare February 4, 2023 14:23
@taiki-e taiki-e changed the title aarch64: Support FEAT_LSE128 aarch64: Support FEAT_LSE128 and FEAT_LRCPC3 Feb 6, 2023
@taiki-e taiki-e force-pushed the aarch64-lse128 branch 7 times, most recently from e83b63a to 22878a7 Compare February 9, 2023 15:50
@taiki-e
Copy link
Owner Author

taiki-e commented Feb 9, 2023

I could build rust-lang/rust#107224 locally and compile the test suite with -C target-feature=+lse2,+rcpc3,+lse128.

However, ArmIE does not support Armv8.9/Armv9.4, so I could not run tests with ArmIE (got SIGILL).
(The last release (22.0) of ArmIE was in March 2022, which was before Armv8.9/Armv9.4 was announced. We may need to use Fast Models which appears to support most of Armv8.9/Armv9.4.)

@taiki-e taiki-e merged commit 21a0e82 into main Aug 10, 2023
98 checks passed
@taiki-e taiki-e deleted the aarch64-lse128 branch August 10, 2023 03:01
@taiki-e taiki-e added O-aarch64 Target: Armv8-A, Armv8-R, or later processors in AArch64 mode and removed O-arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state labels Sep 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
O-aarch64 Target: Armv8-A, Armv8-R, or later processors in AArch64 mode
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant