diff --git a/llvm/lib/Transforms/DFG2LLVM_CUDNN/DFG2LLVM_CUDNN.cpp b/llvm/lib/Transforms/DFG2LLVM_CUDNN/DFG2LLVM_CUDNN.cpp index bc471845ad153136e13e180dbf410caf09099af7..aef2460935512e6bd1f73dcc380be227fe97cb72 100644 --- a/llvm/lib/Transforms/DFG2LLVM_CUDNN/DFG2LLVM_CUDNN.cpp +++ b/llvm/lib/Transforms/DFG2LLVM_CUDNN/DFG2LLVM_CUDNN.cpp @@ -267,9 +267,9 @@ void CGT_CUDNN::codeGen(DFLeafNode* N) { //assert((II->getCalledFunction()->getName()).startswith("llvm.visc.tensor") // && "Only HPVM tensor intrinsics allowed in ApproxHPVM leaf nodes\n"); - if (!(II->getCalledFunction()->getName()).startswith("llvm.visc.tensor")){ - continue; // skip non-tensor ops - } + //if (!(II->getCalledFunction()->getName()).startswith("llvm.visc.tensor")){ + //continue; // skip non-tensor ops + //} /********************* Handle VISC Tensor intrinsics ********************/ switch (II->getIntrinsicID()) { @@ -545,6 +545,28 @@ void CGT_CUDNN::codeGen(DFLeafNode* N) { IItoRemove.push_back(II); } break; + + case Intrinsic::visc_node_id: + { /* llvm.visc.node.id */ + DEBUG(errs() << F_cudnn->getName() << "\t: Handling Node ID Intrinsic \n"); + // Get uint32 argument + Value *Op = II->getOperand(0); + + // Argument list for the runtime call + std::vector<Value*> Args; + Args.push_back(II->getOperand(0)); + + // Create hpvm-tensor-rt function call + Constant* tensor_set_node_id; + DECLARE(tensor_set_node_id); + CallInst::Create(tensor_set_node_id, Args, "", II); + + // Mark to remove at the end + IItoRemove.push_back(II); + } + break; + + default: llvm_unreachable("Unknown VISC Intrinsic!"); break;