diff options
Diffstat (limited to 'lib/Target/X86/InstSelectSimple.cpp')
-rw-r--r-- | lib/Target/X86/InstSelectSimple.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/Target/X86/InstSelectSimple.cpp b/lib/Target/X86/InstSelectSimple.cpp index 87450909b6..984257c4bc 100644 --- a/lib/Target/X86/InstSelectSimple.cpp +++ b/lib/Target/X86/InstSelectSimple.cpp @@ -1664,6 +1664,7 @@ void ISel::LowerUnknownIntrinsicFunctionCalls(Function &F) { case Intrinsic::memcpy: case Intrinsic::memset: case Intrinsic::isnan: + case Intrinsic::isunordered: case Intrinsic::readport: case Intrinsic::writeport: // We directly implement these intrinsics @@ -1742,6 +1743,14 @@ void ISel::visitIntrinsicCall(Intrinsic::ID ID, CallInst &CI) { BuildMI(BB, X86::SETPr, 0, TmpReg2); return; + case Intrinsic::isunordered: + TmpReg1 = getReg(CI.getOperand(1)); + TmpReg2 = getReg(CI.getOperand(2)); + emitUCOMr(BB, BB->end(), TmpReg2, TmpReg1); + TmpReg2 = getReg(CI); + BuildMI(BB, X86::SETPr, 0, TmpReg2); + return; + case Intrinsic::memcpy: { assert(CI.getNumOperands() == 5 && "Illegal llvm.memcpy call!"); unsigned Align = 1; |