Add llvm.ceil, llvm.trunc, llvm.rint, llvm.nearbyint intrinsics.
[oota-llvm.git] / lib / CodeGen / SelectionDAG / SelectionDAGBuilder.cpp
index 0af7b9aa3fc5e1549baa2b3b030b24ff527661b3..22a757d3d4000e4d47c89c5deedda7491c0d8cc0 100644 (file)
@@ -4996,6 +4996,26 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
                              getValue(I.getArgOperand(0)).getValueType(),
                              getValue(I.getArgOperand(0))));
     return 0;
+  case Intrinsic::ceil:
+    setValue(&I, DAG.getNode(ISD::FCEIL, dl,
+                             getValue(I.getArgOperand(0)).getValueType(),
+                             getValue(I.getArgOperand(0))));
+    return 0;
+  case Intrinsic::trunc:
+    setValue(&I, DAG.getNode(ISD::FTRUNC, dl,
+                             getValue(I.getArgOperand(0)).getValueType(),
+                             getValue(I.getArgOperand(0))));
+    return 0;
+  case Intrinsic::rint:
+    setValue(&I, DAG.getNode(ISD::FRINT, dl,
+                             getValue(I.getArgOperand(0)).getValueType(),
+                             getValue(I.getArgOperand(0))));
+    return 0;
+  case Intrinsic::nearbyint:
+    setValue(&I, DAG.getNode(ISD::FNEARBYINT, dl,
+                             getValue(I.getArgOperand(0)).getValueType(),
+                             getValue(I.getArgOperand(0))));
+    return 0;
   case Intrinsic::fma:
     setValue(&I, DAG.getNode(ISD::FMA, dl,
                              getValue(I.getArgOperand(0)).getValueType(),