]> git.ipfire.org Git - thirdparty/gcc.git/commit
AArch64: Add isnan expander [PR 66462]
authorWilco Dijkstra <wilco.dijkstra@arm.com>
Thu, 4 Sep 2025 14:31:16 +0000 (14:31 +0000)
committerWilco Dijkstra <wilco.dijkstra@arm.com>
Tue, 16 Sep 2025 12:31:13 +0000 (12:31 +0000)
commit5b531aa5cc216b5ec4d740940b43ca7a7728cc90
tree827e6c741cefe8d0fb0d561991378165efc6c8ba
parente717aabb6eff417a613a1247124bbd817d1414b3
AArch64: Add isnan expander [PR 66462]

Add an expander for isnan using integer arithmetic.  Since isnan is
just a compare, enable it only with -fsignaling-nans to avoid
generating spurious exceptions.  This fixes part of PR66462.

int isnan1 (float x) { return __builtin_isnan (x); }

Before:
fcmp s0, s0
cset w0, vs
ret

After:
fmov w1, s0
mov w0, -16777216
cmp w0, w1, lsl 1
cset w0, cc
ret

gcc:
PR middle-end/66462
* config/aarch64/aarch64.md (isnan<mode>2): Add new expander.

gcc/testsuite:
PR middle-end/66462
* gcc.target/aarch64/pr66462.c: Update test.
gcc/config/aarch64/aarch64.md
gcc/testsuite/gcc.target/aarch64/pr66462.c