[llvm-commits] CVS: llvm/lib/VMCore/Function.cpp IntrinsicLowering.cpp Verifier.cpp

Chris Lattner lattner at cs.uiuc.edu
Thu Jun 10 21:35:08 PDT 2004


Changes in directory llvm/lib/VMCore:

Function.cpp updated: 1.70 -> 1.71
IntrinsicLowering.cpp updated: 1.14 -> 1.15
Verifier.cpp updated: 1.107 -> 1.108

---
Log message:

I misled Alkis: LLVM should have isnan, not isunordered.  
  isunordered(X, Y) === isnan(X) | isnan(Y)

Remove isunordered, add isnan.


---
Diffs of the changes:  (+14 -6)

Index: llvm/lib/VMCore/Function.cpp
diff -u llvm/lib/VMCore/Function.cpp:1.70 llvm/lib/VMCore/Function.cpp:1.71
--- llvm/lib/VMCore/Function.cpp:1.70	Thu Jun 10 20:08:18 2004
+++ llvm/lib/VMCore/Function.cpp	Thu Jun 10 21:29:43 2004
@@ -223,7 +223,7 @@
     if (getName() == "llvm.gcroot")  return Intrinsic::gcroot;
     break;
   case 'i':
-    if (getName() == "llvm.isunordered") return Intrinsic::isunordered;
+    if (getName() == "llvm.isnan") return Intrinsic::isnan;
     break;
   case 'l':
     if (getName() == "llvm.longjmp")  return Intrinsic::longjmp;


Index: llvm/lib/VMCore/IntrinsicLowering.cpp
diff -u llvm/lib/VMCore/IntrinsicLowering.cpp:1.14 llvm/lib/VMCore/IntrinsicLowering.cpp:1.15
--- llvm/lib/VMCore/IntrinsicLowering.cpp:1.14	Thu Jun 10 20:08:18 2004
+++ llvm/lib/VMCore/IntrinsicLowering.cpp	Thu Jun 10 21:29:43 2004
@@ -191,10 +191,12 @@
                     (*(CI->op_begin()+1))->getType(), MemsetFCache);
     break;
   }
-  case Intrinsic::isunordered: {
-    static Function *IsunorderedFCache = 0;
-    ReplaceCallWith("isunordered", CI, CI->op_begin()+1, CI->op_end(),
-                    (*(CI->op_begin()+1))->getType(), IsunorderedFCache);
+  case Intrinsic::isnan: {
+    // FIXME: This should force the argument to be a double.  There may be
+    // multiple isnans for different FP arguments.
+    static Function *isnanFCache = 0;
+    ReplaceCallWith("isnan", CI, CI->op_begin()+1, CI->op_end(),
+                    (*(CI->op_begin()+1))->getType(), isnanFCache);
     break;
   }
   }


Index: llvm/lib/VMCore/Verifier.cpp
diff -u llvm/lib/VMCore/Verifier.cpp:1.107 llvm/lib/VMCore/Verifier.cpp:1.108
--- llvm/lib/VMCore/Verifier.cpp:1.107	Thu Jun 10 20:08:18 2004
+++ llvm/lib/VMCore/Verifier.cpp	Thu Jun 10 21:29:43 2004
@@ -688,7 +688,13 @@
     break;
   }
 
-  case Intrinsic::isunordered:     NumArgs = 2; break;
+  case Intrinsic::isnan: 
+    Assert1(FT->getNumParams() == 1 && FT->getParamType(0)->isFloatingPoint(),
+            "Illegal prototype for llvm.isnan", IF);
+    Assert1(FT->getReturnType() == Type::BoolTy,
+            "Illegal prototype for llvm.isnan", IF);
+    NumArgs = 1;
+    break;
 
   case Intrinsic::setjmp:          NumArgs = 1; break;
   case Intrinsic::longjmp:         NumArgs = 2; break;





More information about the llvm-commits mailing list