Hi, > Dunno if we really need a builtin for this, especially if it is lowered > to that x >= y && x <= y early, will defer to Joseph.
I think it’d be nice to have one for consistency, as the other standard
floating-point functions are there. It would also make things slightly easier
for our Fortran implementation, although admittedly we can do without.
A tentative patch is attached, it seems to work well on simple examples, but
for test coverage the hard part is going to be that the comparisons seem to be
optimised away very easily into their non-signaling versions. Basically, if I
do:
float x = __builtin_nanf("");
printf("%d\n", __builtin_iseqsig(__builtin_nanf(""), __builtin_inff()));
printf("%d\n", __builtin_iseqsig(x, __builtin_inff()));
With -O0 -fno-unsafe-math-optimizations -frounding-math -fsignaling-nans: first
one does not raise invalid, second one does.
With -O2 -fno-unsafe-math-optimizations -frounding-math -fsignaling-nans: no
invalid raised at all.
FX
iseqsig.diff
Description: Binary data
