libc/aarch64: fix strlen() when flush-to-zero is set
Our SIMD-enhanced strlen() implementation for AArch64 uses
a floating-point comparison to compare a bit mask to zero.
This works fine under normal circumstances, but fails if
the FZ (flush-to-zero) flag is set in FPCR (the floating-point
control register) as then the CPU no longer distinguishes
denormals from zero.
This was not caught during testing; this flag is rarely set
and programs that do so rarely perform string manipulation.
Avoid this problem by using an integer comparison instead.
The performance impact seems to be small (about 0.5 %) on
the Windows 2023 Dev Kit, but seems to be more significant
(up to around 19%) on the RPi 5.
Reviewed by: getz
Fixes: 3863fec1ce2dc6033f094a085118605ea89db9e2
Differential Revision: https://reviews.freebsd.org/D48442