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: Use CASP instead of LDXP/STXP for load if available #20

Merged
merged 1 commit into from
Aug 3, 2022
Merged

Conversation

taiki-e
Copy link
Owner

@taiki-e taiki-e commented Jul 27, 2022

See llvm/llvm-project#55199 for the motivation.

In CAS we have already done this; in RMW and store we still use LDXP/STXP even if LSE is available because the performance benefits do not seem clear yet.

@taiki-e taiki-e added the O-arm Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state label Jul 27, 2022
@taiki-e
Copy link
Owner Author

taiki-e commented Jul 27, 2022

Ah, it seems that there is the (unreviewed) similar patch in LLVM (https://reviews.llvm.org/D110069)

@taiki-e taiki-e force-pushed the casp branch 4 times, most recently from cbad42c to 5712ce5 Compare August 3, 2022 15:17
@taiki-e taiki-e changed the title aarch64: Use CASP instead of LDXP/STXP for load/store/RMW if available aarch64: Use CASP instead of LDXP/STXP for load if available Aug 3, 2022
@taiki-e
Copy link
Owner Author

taiki-e commented Aug 3, 2022

This improves load performance but does not seem to improve RMW and store performance (on AWS Graviton2).

https://cirrus-ci.com/task/5305441004552192
https://cirrus-ci.com/task/5831426640707584

@taiki-e
Copy link
Owner Author

taiki-e commented Aug 3, 2022

bors r+

@bors
Copy link
Contributor

bors bot commented Aug 3, 2022

taiki-e added a commit to taiki-e/atomic-maybe-uninit that referenced this pull request Aug 3, 2022
@bors bors bot merged commit 50b42f6 into main Aug 3, 2022
@bors bors bot deleted the casp branch August 3, 2022 17:44
bors bot added a commit that referenced this pull request Feb 5, 2023
70: aarch64: Use CASP instead of LDXP/STXP for store/RMW if available r=taiki-e a=taiki-e

Follow-up #20

In #20, we postponed this (#20 (comment)), but LLVM 16+ adopted this (llvm/llvm-project@10d34f5), so we'll follow LLVM's behavior.

Co-authored-by: Taiki Endo <[email protected]>
bors bot added a commit that referenced this pull request Feb 5, 2023
70: aarch64: Use CASP instead of LDXP/STXP for store/RMW if available r=taiki-e a=taiki-e

Follow-up #20

In #20, we postponed this (#20 (comment)), but LLVM 16+ adopted this (llvm/llvm-project@10d34f5), so we'll follow LLVM's behavior.

Co-authored-by: Taiki Endo <[email protected]>
bors bot added a commit that referenced this pull request Feb 6, 2023
70: aarch64: Use CASP instead of LDXP/STXP for store/RMW if available r=taiki-e a=taiki-e

Follow-up #20

In #20, we postponed this (#20 (comment)), but LLVM 16+ adopted this (llvm/llvm-project@10d34f5), so we'll follow LLVM's behavior.

Co-authored-by: Taiki Endo <[email protected]>
@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