[DAGCombiner] Fold fmin/fmax of NaN
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 9 Sep 2020 20:35:02 +0000 (22:35 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 9 Sep 2020 21:53:32 +0000 (23:53 +0200)
commit0a5dc7effb191eff740e0e7ae7bd8e1f6bdb3ad9
treed813a90862fdbb4a64f40af1821df8e604997233
parent5a4a05c8116ebdcb434cd15796a255cf024a6bf0
[DAGCombiner] Fold fmin/fmax of NaN

fminnum(X, NaN) is X, fminimum(X, NaN) is NaN. This mirrors the
behavior of existing InstSimplify folds.

This is expected to improve the reduction lowerings in D87391,
which use NaN as a neutral element.

Differential Revision: https://reviews.llvm.org/D87415
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/test/CodeGen/ARM/fminmax-folds.ll
llvm/test/CodeGen/X86/fmaxnum.ll
llvm/test/CodeGen/X86/fminnum.ll