Skip to content

aarch64-nintendo-switch-freestanding - Enable CPU features that are always available in a live system (crypto instructions, plus explicit NEON). #144613

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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

pantsman0
Copy link

@pantsman0 pantsman0 commented Jul 29, 2025

While some NEON and crypto features may not be supported on the Nintendo Switch at boot (e.g. on the a53 cores) and this has not been tested, the features will always be available if running as a sysmodule or homebrew application under Horizon/Atmosphere. EDIT: the a53 cores are fused out, these features are always available.

This has been tested with local tools personally, as well as building emuiibo as it uses both sha and aes primitives. This was tested using inline assembly in previous versions, and in current versions by using the aes, ctr, hmac, and sha2 crates.

r? @jam1garner

This ended up being much delayed from our discussions about updating this. I tested a number of individual features such as the aes and sha2 target-features directly to avoid a warning message with the crypto feature, but that appears to be caused by #96472 and is not actually an issue.

There is also a decision to make here about explicitly enabling the neon feature. I am in favor of it to be explicit, but it is not necessary as it is already enabled by the v8a and crypto features. I will defer to your decision as it does not change the actual instructions available for codegen.

While some neon and crypto features may not be supported on the switch at boot (e.g. on the a53 cores), the features will _always_ be available if running as a sysmodule or homebrew application under Horizon/Atmosphere.
@rustbot
Copy link
Collaborator

rustbot commented Jul 29, 2025

Failed to set assignee to jam1garner: invalid assignee

Note: Only org members with at least the repository "read" role, users with write permissions, or people who have commented on the PR may be assigned.

@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 29, 2025
@rustbot
Copy link
Collaborator

rustbot commented Jul 29, 2025

These commits modify compiler targets.
(See the Target Tier Policy.)

@rustbot rustbot added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label Jul 29, 2025
@pantsman0 pantsman0 changed the title Enable CPU features that are always available in a live system (crypto instructions, plus explicit NEON). aarch64-nintendo-switch-freestanding - Enable CPU features that are always available in a live system (crypto instructions, plus explicit NEON). Jul 29, 2025
@pantsman0
Copy link
Author

The crc features has also been added, as it is always available on the T210.

Copy link
Contributor

@jam1garner jam1garner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me! Good catch, these features should've been included in the first place

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants