InstCombine: Fold out scale-if-denormal pattern
Fold select (fcmp oeq x, 0), (fmul x, y), x => x This cleans up a pattern left behind by denormal range checks under denormals are zero. The pattern starts out as something like: x = x < smallest_normal ? x * K : x; The comparison folds to an == 0 when the denormal mode treats input denormals as zero. This makes library denormal checks free after linked into DAZ enabled code. alive2 is mostly happy with this, but there are some issues. First, there are many reported failures in some of the negative tests that happen to trigger some preexisting canonicalize introducing combine. Second, alive2 is incorrectly asserting that denormals must be flushed with the DAZ modes. It's allowed to drop a canonicalize. https://reviews.llvm.org/D157030
Loading
Please sign in to comment