[KnownFPClass] Refactor sNaN handling for KnownFPClass (#216086)
Addresses
https://github.com/llvm/llvm-project/pull/215159#pullrequestreview-4898780491
I have added/modified some helpers to help with the handling of `sNaN`
and `qNaN` propagation
Changes:
- Allow `atan2` to rule out `sNaN` instead of only `NaN` in general.
- Renamed `Known.propagateNaN(KnownSrc)` to
`Known.propagateNonNaN(KnownSrc)`
- Added `Known.propagateNonSNaN(KnownSrc)` (same as `propagateNonNaN`
but does not touch sign or `qNaN`)
- Added two argument versions of `propagateNonNaN` and
`propagateNonSNaN`
Future plans:
- Add `sNaN` handling for `sin`, `cos`, `tan`, and `log`.