CI: Replace QEMU armhf with native (32-bit compatibility mode) #28663
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport of #28653.
This PR enhances support for ARM platforms with several important fixes:
Native ARMv7/armhf Testing: Adds a new CI workflow that tests NumPy on 32-bit ARM hard-float (armhf) using 32-bit compatibility mode on ARM64 GitHub runners, replacing the previous QEMU-based approach for more reliable and faster testing.
ARMv8 32-bit Feature Detection: Fixes detection of advanced ARMv8 features (FPHP, ASIMDHP, ASIMDDP, ASIMDFHM) when running in 32-bit mode (aarch32), and addresses memory leaks in CPU feature detection on Android.
ARM Floating-Point Error Handling: Adds protection against floating-point errors when processing positive infinity values in SIMD sqrt operations on ARMv7 architectures.
Subnormal Number Handling: Adds an xfail marker for linspace tests with subnormal numbers on ARM32 platforms, addressing the platform-specific behavior where subnormals are flushed to zero.
relates #24548, #28635
CI: Tests NumPy on 32-bit ARM hard-float (armhf) via compatibility mode
BUG, SIMD: Fix floating-point errors with positive infinity input in sqrt on armhf
Guards against passing positive infinity to vrsqrteq_f32 in sqrt operation,
which would raise invalid floating-point errors on ARMv7 architectures.
TEST: Mark linspace subnormal test as xfail on ARM32 platforms
Adds an xfail marker to the linspace subnormal test case for ARMv7 and AArch32
platforms. These platforms seem to flush subnormals to zero (FTZ) even when
not explicitly enabled via the FPSCR register, causing the test to fail.
BUG, SIMD: Fix ARMv8 feature detection in 32-bit mode
Fix detection of
FPHP
,ASIMDHP
,ASIMDDP
,ASIMDFHM
featureson ARMv8 32-bit mode (aarch32). Fix memory leaks in CPU feature
detection on Android by adding missing free() calls.
CI: Remove QEMU-based armhf testing
Remove QEMU-based armhf testing as we now use native 32-bit compatibility
mode running on ARM64 GitHub runners in a separate implementation.