From: Alkis Evlogimenos Date: Tue, 1 Mar 2005 02:07:58 +0000 (+0000) Subject: Lower llvm.isunordered(a, b) into a != a | b != b. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=d0656fc94dbdbf87217812f68778963dbd6244eb;p=oota-llvm.git Lower llvm.isunordered(a, b) into a != a | b != b. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20382 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/IntrinsicLowering.cpp b/lib/CodeGen/IntrinsicLowering.cpp index 85e8ba533fd..0fe49ecedc3 100644 --- a/lib/CodeGen/IntrinsicLowering.cpp +++ b/lib/CodeGen/IntrinsicLowering.cpp @@ -206,9 +206,14 @@ void DefaultIntrinsicLowering::LowerIntrinsicCall(CallInst *CI) { break; } case Intrinsic::isunordered: { - static Function *isunorderedFCache = 0; - ReplaceCallWith("isunordered", CI, CI->op_begin()+1, CI->op_end(), - Type::BoolTy, isunorderedFCache); + Value *L = CI->getOperand(1); + Value *R = CI->getOperand(2); + + Value *LIsNan = new SetCondInst(Instruction::SetNE, L, L, "LIsNan", CI); + Value *RIsNan = new SetCondInst(Instruction::SetNE, R, R, "RIsNan", CI); + CI->replaceAllUsesWith( + BinaryOperator::create(Instruction::Or, LIsNan, RIsNan, + "isunordered", CI)); break; } }