diff options
author | Chris Lattner <sabre@nondot.org> | 2004-06-11 02:29:43 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-06-11 02:29:43 +0000 |
commit | 137cc4fc8c549c805e817095e2d82776a2af8095 (patch) | |
tree | c4657f95ecdf042081916165000f6bbaf63aea3f /lib/VMCore | |
parent | 320062845b63b0b07634147c4751be0ee40fffd5 (diff) |
I misled Alkis: LLVM should have isnan, not isunordered.
isunordered(X, Y) === isnan(X) | isnan(Y)
Remove isunordered, add isnan.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14132 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore')
-rw-r--r-- | lib/VMCore/Function.cpp | 2 | ||||
-rw-r--r-- | lib/VMCore/IntrinsicLowering.cpp | 10 | ||||
-rw-r--r-- | lib/VMCore/Verifier.cpp | 8 |
3 files changed, 14 insertions, 6 deletions
diff --git a/lib/VMCore/Function.cpp b/lib/VMCore/Function.cpp index 82f3645acb..a0f86d55e5 100644 --- a/lib/VMCore/Function.cpp +++ b/lib/VMCore/Function.cpp @@ -223,7 +223,7 @@ unsigned Function::getIntrinsicID() const { 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; diff --git a/lib/VMCore/IntrinsicLowering.cpp b/lib/VMCore/IntrinsicLowering.cpp index 38ba73d01f..bc6f02e4d6 100644 --- a/lib/VMCore/IntrinsicLowering.cpp +++ b/lib/VMCore/IntrinsicLowering.cpp @@ -191,10 +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); + 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; } } diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index 156b2cc45d..244d346490 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -688,7 +688,13 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) { 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; |