From 999ce28bab99ac738e8ef35ab51138134d6c9d54 Mon Sep 17 00:00:00 2001
From: Prakalp Srivastava <psrivas2@illinois.edu>
Date: Wed, 16 Mar 2016 19:52:34 -0500
Subject: [PATCH] Implemented translation of floor intrinsic in PTX backend

---
 llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp b/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp
index 53850c98c2..9c0476ff52 100644
--- a/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp
+++ b/llvm/lib/Transforms/DFG2LLVM_NVPTX/DFG2LLVM_NVPTX.cpp
@@ -1379,6 +1379,7 @@ void CGT_NVPTX::codeGen(DFLeafNode* N) {
           }
           case Intrinsic::floor:
           {
+            errs() << "Found floor intrinsic\n";
             F = Intrinsic::getDeclaration(&KernelM, Intrinsic::nvvm_floor_f);
             FunctionType* FTy = F->getFunctionType();
             DEBUG(errs() << *F << "\n");
@@ -1400,6 +1401,12 @@ void CGT_NVPTX::codeGen(DFLeafNode* N) {
               }
               args.push_back(V);
             }
+            // Insert call instruction
+            CallInst* Inst = CallInst::Create(F, args,
+                  F->getReturnType()->isVoidTy()? "" : CI->getName(), CI);
+            DEBUG(errs() << "\tSubstitute with: " << *Inst << "\n");
+            CI->replaceAllUsesWith(Inst);
+            IItoRemove.push_back(II);
             break;
           }
           default:
-- 
GitLab