[PATCH] D21284: Fold fmin(nnan x, inf) -> x, fmax(nnan x, -inf) -> x, fmax(nnan ninf x, -flt_max) -> x and fmin(nnan ninf x, flt_max) -> x

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 19 13:17:26 PDT 2016


davide added a subscriber: davide.

================
Comment at: lib/Transforms/InstCombine/InstCombineCalls.cpp:1007-1014
@@ -1006,3 +1006,10 @@
 
-    // TODO: fmin(nnan x, inf) -> x
-    // TODO: fmin(nnan ninf x, flt_max) -> x
+    // fmin(nnan x, inf) -> x
+    if (II.hasNoNaNs() && C1 && C1->isInfinity())
+      return Arg0;
+
+    if (Instruction *I = dyn_cast<Instruction>(Arg0)) {
+      if (I->hasNoNaNs() && C1 && C1->isInfinity())
+        return Arg0;
+    }
+
----------------
You should be able to put these where `// fmin(x, -inf) -> -inf` is performed, so that you avoid duplicating the check `C1 && C1->isInfinity()`.


Repository:
  rL LLVM

http://reviews.llvm.org/D21284





More information about the llvm-commits mailing list