Finish adding the llvm.readio and llvm.writeio intrinsics.
authorJohn Criswell <criswell@uiuc.edu>
Wed, 14 Apr 2004 13:46:52 +0000 (13:46 +0000)
committerJohn Criswell <criswell@uiuc.edu>
Wed, 14 Apr 2004 13:46:52 +0000 (13:46 +0000)
Sorry these didn't get in yesterday.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12942 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Function.cpp
lib/VMCore/Verifier.cpp

index 332d598787ee240d9951a57f2b21bf027eb6b3d4..5b2b0543306a104a991376ad97a65ab4352f9e11 100644 (file)
@@ -228,6 +228,7 @@ unsigned Function::getIntrinsicID() const {
   case 'r':
     if (getName() == "llvm.returnaddress")  return Intrinsic::returnaddress;
     if (getName() == "llvm.readport")       return Intrinsic::readport;
+    if (getName() == "llvm.readio")         return Intrinsic::readio;
     break;
   case 's':
     if (getName() == "llvm.setjmp")     return Intrinsic::setjmp;
@@ -240,6 +241,7 @@ unsigned Function::getIntrinsicID() const {
     if (getName() == "llvm.va_start") return Intrinsic::vastart;
   case 'w':
     if (getName() == "llvm.writeport") return Intrinsic::writeport;
+    if (getName() == "llvm.writeio")   return Intrinsic::writeio;
     break;
   }
   // The "llvm." namespace is reserved!
index f40ffe0a13bf0fc2bd8c1f93e0efa520bcf17ca5..fc237e69e5198a2cbb027a39ee93fccec6cd3c1b 100644 (file)
@@ -618,14 +618,36 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) {
     NumArgs = 2;
     break;
 
+  case Intrinsic::writeio:
+    Assert1(FT->getNumParams() == 2,
+            "Illegal # arguments for intrinsic function!", IF);
+    Assert1(FT->getParamType(0)->isFirstClassType(),
+            "First argument not a first class type!", IF);
+    Assert1(FT->getParamType(1)->getPrimitiveID() == Type::PointerTyID,
+            "Second argument not a pointer!", IF);
+    NumArgs = 2;
+    break;
+
   case Intrinsic::readport:
     Assert1(FT->getNumParams() == 1,
             "Illegal # arguments for intrinsic function!", IF);
+    Assert1(FT->getReturnType()->isFirstClassType(),
+            "Return type is not a first class type!", IF);
     Assert1(FT->getParamType(0)->isUnsigned(),
             "First argument not unsigned int!", IF);
     NumArgs = 1;
     break;
 
+  case Intrinsic:: readio:
+    Assert1(FT->getNumParams() == 1,
+            "Illegal # arguments for intrinsic function!", IF);
+    Assert1(FT->getReturnType()->isFirstClassType(),
+            "Return type is not a first class type!", IF);
+    Assert1(FT->getParamType(0)->getPrimitiveID() == Type::PointerTyID,
+            "First argument not a pointer!", IF);
+    NumArgs = 1;
+    break;
+
   case Intrinsic::setjmp:          NumArgs = 1; break;
   case Intrinsic::longjmp:         NumArgs = 2; break;
   case Intrinsic::sigsetjmp:       NumArgs = 2; break;