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_LSFE #201

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

aarch64: Support FEAT_LSFE #201

wants to merge 1 commit into from

Conversation

taiki-e
Copy link
Owner

@taiki-e taiki-e commented Jan 12, 2025

Armv9.6 added atomic float instructions for binary{16,32,64} and bfloat16 as FEAT_LSFE (Large System Float Extension).

This PR optimizes AArch64 {16,32,64}-bit atomic float add/sub/max/min when FEAT_LSFE is enabled.

LLVM's assembly support for FEAT_LSFE needs LLVM 20 (llvm/llvm-project@67ff5ba), so use .inst directive on LLVM 19 or older.

Run-time detection is also implemented, but at this time it is only used in testing. AFAIK no CPUs actually implement this feature yet, so we will only refer to the feature available at compile time at this time.

@taiki-e taiki-e added the O-aarch64 Target: Armv8-A, Armv8-R, or later processors in AArch64 mode label Jan 12, 2025
@taiki-e taiki-e added the A-float Area: related to atomic float label Jan 12, 2025
@taiki-e taiki-e force-pushed the main branch 5 times, most recently from 53c8409 to 378f6cd Compare January 15, 2025 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-float Area: related to atomic float 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