LangRef: Clarify behavior of llvm.is.fpclass with "denormal-fp-math"
This does not read canonicalized values, which matches the behavior of the basic DAG expansion using integer operations. There is a buggy expansion using FP-operations if legal which needs to be adjusted to account for this. We need to be aware of the denormal mode to switch between is.fpclass calls and fcmp. There's no real spec for denormal handling anywhere, but I believe this is the most harmonious way to deal with the question considering the requirement to not quiet input signaling nans. This matches the behavior of MSVC's _fpclass and AMDGPU's v_cmp_class_f32. fpclassify currently does not use this, and has inconsistent behavior for denormals under DAZ on different platforms (i.e. clang and gcc report FP_ZERO return FP_ZERO for a denormal under DAZ, MSVC reports FP_SUBNORMAL).
Loading
Please sign in to comment