Add the isunordered intrinsic.
authorAlkis Evlogimenos <alkis@evlogimenos.com>
Fri, 11 Jun 2004 01:08:18 +0000 (01:08 +0000)
committerAlkis Evlogimenos <alkis@evlogimenos.com>
Fri, 11 Jun 2004 01:08:18 +0000 (01:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14127 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Intrinsics.h
lib/CodeGen/IntrinsicLowering.cpp
lib/VMCore/Function.cpp
lib/VMCore/IntrinsicLowering.cpp
lib/VMCore/Verifier.cpp

index de709cbbe8d013f5116d4f31ffbe3dad7494c13c..56ecb4f1e61b8724a4a96a6f9b8240de1db8787c 100644 (file)
@@ -60,7 +60,6 @@ namespace Intrinsic {
     memset,         // Fill memory with a byte value
 
     // Standard libm functions.
-    
 
     // Input/Output intrinsics.
     readport,
@@ -68,6 +67,9 @@ namespace Intrinsic {
     readio,
     writeio,
 
+    // Support for unordered compare intrinsic
+    isunordered,
+
     //===------------------------------------------------------------------===//
     // This section defines intrinsic functions used to represent Alpha
     // instructions.
index 1dd819cdb4230b57767acefeace328cb33d0a44f..38ba73d01f8fc82957ff8ec44e913e9ffde78ad9 100644 (file)
@@ -191,6 +191,12 @@ void DefaultIntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
                     (*(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);
+    break;
+  }
   }
   
   assert(CI->use_empty() &&
index 01339e1bb06206267d5d9e72c1faf80dd3b15062..82f3645acb10b534f7e581202faa445933b00353 100644 (file)
@@ -222,6 +222,9 @@ unsigned Function::getIntrinsicID() const {
     if (getName() == "llvm.gcread")  return Intrinsic::gcread;
     if (getName() == "llvm.gcroot")  return Intrinsic::gcroot;
     break;
+  case 'i':
+    if (getName() == "llvm.isunordered") return Intrinsic::isunordered;
+    break;
   case 'l':
     if (getName() == "llvm.longjmp")  return Intrinsic::longjmp;
     break;
index 1dd819cdb4230b57767acefeace328cb33d0a44f..38ba73d01f8fc82957ff8ec44e913e9ffde78ad9 100644 (file)
@@ -191,6 +191,12 @@ void DefaultIntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
                     (*(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);
+    break;
+  }
   }
   
   assert(CI->use_empty() &&
index ef76dff0baf8fbf6fd99928a23cfb0a682b0af7b..156b2cc45d15e025e974ba5965bb03b6123936e0 100644 (file)
@@ -688,6 +688,8 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) {
     break;
   }
 
+  case Intrinsic::isunordered:     NumArgs = 2; break;
+
   case Intrinsic::setjmp:          NumArgs = 1; break;
   case Intrinsic::longjmp:         NumArgs = 2; break;
   case Intrinsic::sigsetjmp:       NumArgs = 2; break;