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

Fix-up i686/armv7 support #45

Merged
merged 6 commits into from
Oct 9, 2024
Merged

Fix-up i686/armv7 support #45

merged 6 commits into from
Oct 9, 2024

Conversation

topolarity
Copy link
Member

This gets 32-bit working properly (finally), and brings us down to ~5-6 instructions of overhead on x86 and armv7:

julia> println(Sys.ARCH); @pstats "(instructions,branch-instructions,branch-misses)" nothing
arm
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌ instructions             6.00e+00  100.0%
│ branch-instructions      1.00e+00  100.0%  # 16.7% of insns
└ branch-misses            0.00e+00  100.0%  #  0.0% of branch insns
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
julia> println(Sys.ARCH); @pstats "(instructions,branch-instructions,branch-misses)" nothing
i686
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌ instructions             5.00e+00  100.0%
│ branch-instructions      2.00e+00  100.0%  # 40.0% of insns
└ branch-misses            1.00e+00  100.0%  # 50.0% of branch insns
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Without this, Julia will potentially notice the high bit of the pointer
is set and complain about an inexact conversion.
This gets me down to ~5-6 instructions of overhead on x86 and armv7:

```julia
julia> println(Sys.ARCH); @pstats "(instructions,branch-instructions,branch-misses)" nothing
arm
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌ instructions             6.00e+00  100.0%
│ branch-instructions      1.00e+00  100.0%  # 16.7% of insns
└ branch-misses            0.00e+00  100.0%  #  0.0% of branch insns
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```

```julia
julia> println(Sys.ARCH); @pstats "(instructions,branch-instructions,branch-misses)" nothing
i686
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌ instructions             5.00e+00  100.0%
│ branch-instructions      2.00e+00  100.0%  # 40.0% of insns
└ branch-misses            1.00e+00  100.0%  # 50.0% of branch insns
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
@topolarity topolarity force-pushed the ct/fixup-32-bit branch 7 times, most recently from d111fae to 337fccb Compare October 4, 2024 21:21
@Zentrik
Copy link
Collaborator

Zentrik commented Oct 4, 2024

Do we have runners for all the arches you're trying to test?

@topolarity
Copy link
Member Author

I'm not entirely sure we do - it also looks like our PowerPC machines have a higher perf_event_paranoid setting, so I might have to pull that one

I'll ping some CI folks and see what we should use

We'll have to wait until someone would like to setup CirrusCI
(https://github.com/ararslan/CirrusCI.jl) to get AArch64 tested,
but for now this at least means we have one 32-bit arch covered
which is still a big improvement.
@topolarity
Copy link
Member Author

Sounds like we need https://github.com/ararslan/CirrusCI.jl to get better platform support, but I'm happy just to have 32-bit coverage of any kind for now so let's merge this with the x86-64 + i686 CI only

@topolarity topolarity merged commit eae2705 into master Oct 9, 2024
1 check passed
@topolarity topolarity deleted the ct/fixup-32-bit branch October 9, 2024 11:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants