-
Notifications
You must be signed in to change notification settings - Fork 13.3k
apple-m3 detected as the native CPU for nightly rustc on apple-m4 #133414
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
Comments
We use LLVM to do our detection, and that will need a similar fix as llvm/llvm-project#82100. I don't own an M4 myself, so could I get you to run: $ sysctl hw.cpufamily Just to make sure what the value actually is? |
I've submitted llvm/llvm-project#117530, but I'd still like to know the value of |
@madsmtm $ /usr/sbin/sysctl hw.cpufamily
hw.cpufamily: 399882554 (CPUFAMILY_ARM_BRAVA (0x17d5b93a)) |
Great that I asked you, because I didn't actually implement that at first, as that constant was only available in the SDK shipped with Xcode 16.2 beta 3 (and not in Xcode 16.1)! But have done it now, thanks for the help! |
Add Apple M4 host detection, which fixes rust-lang/rust#133414. Also add support for older ARM families (this is likely never going to get used, since only macOS is officially supported as host OS, but nice to have for completeness sake). Error handling (checking `CPUFAMILY_UNKNOWN`) is also included here. Finally, add links to extra documentation to make it easier for others to update this in the future. NOTE: These values are taken from `mach/machine.h` the Xcode 16.2 SDK, and has been confirmed on an M4 Max in rust-lang/rust#133414 (comment).
The LLVM PR has been merged. @rustbot label llvm-fixed-upstream |
This should be fixed on nightly. Can someone on the relevant hardware confirm? |
It's just been confirmed that that the target CPU detection is now fixed on the latest nightly. Thank you. $ /usr/sbin/sysctl -n machdep.cpu.brand_string
Apple M4 Max
$ rustup run nightly rustc --version --verbose
rustc 1.87.0-nightly (46420c960 2025-02-22)
binary: rustc
commit-hash: 46420c96070b4c4bd8242f16d5806b8f26a57016
commit-date: 2025-02-22
host: aarch64-apple-darwin
release: 1.87.0-nightly
LLVM version: 20.1.0
$ rustup run nightly rustc --print target-cpus | head -n2
Available CPUs for this target:
native - Select the CPU of the current host (currently apple-m4). |
I tried the following code with the latest nightly toolchain on a MacBook Pro M4 Max device:
$ rustup run nightly rustc --print target-cpus | head -n2
I expected to see this happen:
The output is expected to be as follows, indicating that the detected CPU is
apple-m4
.Instead, this happened:
The output indicates that the detected CPU is
apple-m3
, notapple-m4
.The latest nightly rustc does recognize
apple-m4
as a valid target-cpu, though:Meta
As was the case in the past similar issue, #127448 (mis-detection of apple-m3 as apple-m2), this might be addressed by an upcoming update to the upstream LLVM.
This fix (llvm/llvm-project#106599) in LLVM 19.x might be relevant.
The text was updated successfully, but these errors were encountered: