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: Enable run-time detection of FEAT_LRCPC3/FEAT_LSE128 in load/store #174

Merged
merged 1 commit into from
Sep 2, 2024

Conversation

taiki-e
Copy link
Owner

@taiki-e taiki-e commented Sep 2, 2024

  • (new) If FEAT_LSE2 is not available at compile-time, we want to do run-time detection of FEAT_LSE2 (we are already doing this as it greatly improves performance: aarch64: Support run-time detection of FEAT_LSE2 #126), so we do run-time detection of FEAT_LRCPC3/FEAT_LSE128 at the same time.
  • (as-is) If FEAT_LSE2 is available at compile-time, we don't do run-time detection of FEAT_LRCPC3/FEAT_LSE128 for load/store at this time, since FEAT_LRCPC3/FEAT_LSE128 is not yet available for most CPUs.
    (macOS that doesn't have any FEAT_LRCPC3/FEAT_LSE128-enabled CPUs as of M4 is only a platform that currently enables FEAT_LSE2 at compile-time by default.)
  • (as-is) We don't do run-time detection of FEAT_LSE128 for swap/fetch_and/fetch_or at this time, because FEAT_LSE128 is not yet available for most CPUs, but since swpp/ldclrp/ldsetp is wait-free, it would make sense to do run-time detection in the future.

Also this documents the exact instruction selection per operation as comments.

Run-time detection of these features is usually supported on platforms that support run-time detection of FEAT_LSE2 and was implemented in this crate as a test-only implementation over 1 years ago (.e.g., f5daf34, e12b4bd)

@taiki-e taiki-e added the O-arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state label Sep 2, 2024
@taiki-e taiki-e force-pushed the aarch64-runtime-rcpc3-lse128-load-store branch from 8a6a1e9 to 0c1dae4 Compare September 2, 2024 14:56
@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
@taiki-e taiki-e force-pushed the aarch64-runtime-rcpc3-lse128-load-store branch 3 times, most recently from bdf9921 to b4a06f3 Compare September 2, 2024 15:55
@taiki-e taiki-e force-pushed the aarch64-runtime-rcpc3-lse128-load-store branch from b4a06f3 to 2a1f65c Compare September 2, 2024 16:32
@taiki-e taiki-e merged commit 5dc8f4f into main Sep 2, 2024
99 checks passed
@taiki-e taiki-e deleted the aarch64-runtime-rcpc3-lse128-load-store branch September 2, 2024 18:22
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