Builtin floating-point number classification functions:
- __builtin_isnan,
- __builtin_isinf,
- __builtin_finite, and
- __builtin_isnormal
now are implemented using llvm.is_fpclass. New builtin functions were
added:
- __builtin_issubnormal,
- __builtin_iszero, and
- __builtin_issignaling.
They represent corresponding standard C library functions and are also
implemented using llvm.is_fpclass.
A new builting function __builtin_isfpclass is added. It is called as:
- __builtin_isfpclass(<test>, <floating point value>)
and returns an integer value, which is non-zero if the floating point
argument belongs to one of the classes specified by the first argument,
and zero otherwise. The set of classes is an integer value, where each
value class is represented by a bit. There are ten data classes, as
defined by the IEEE-754 standard.
This change makes the target callback TargetCodeGenInfo::testFPKind
unneeded. It is preserved in this change and should be removed later.
Sorry, I should have clarified, all the new builtins should be added separately from the change of the implementation of the existing builtins