From 1b191369ffc89021a71bbd59a07b24eadd2499a5 Mon Sep 17 00:00:00 2001 From: Akash Kothari <akashk4@tyler.cs.illinois.edu> Date: Tue, 14 Jan 2020 13:17:05 -0600 Subject: [PATCH] Cleaned up implementation in DFG2LLVM header --- hpvm/include/SupportVISC/DFG2LLVM.h | 75 +++-------------------------- 1 file changed, 6 insertions(+), 69 deletions(-) diff --git a/hpvm/include/SupportVISC/DFG2LLVM.h b/hpvm/include/SupportVISC/DFG2LLVM.h index 439b630754..057f104220 100644 --- a/hpvm/include/SupportVISC/DFG2LLVM.h +++ b/hpvm/include/SupportVISC/DFG2LLVM.h @@ -182,66 +182,7 @@ bool CodeGenTraversal::checkPreferredTarget(DFNode* N, visc::Target T) { } visc::Target CodeGenTraversal::getPreferredTarget(DFNode *N) { - - Function* F = N->getFuncPointer(); - Module* M = F->getParent(); - NamedMDNode* HintNode = M->getOrInsertNamedMetadata("visc_hint_cpu"); - for (unsigned i = 0; i < HintNode->getNumOperands(); i++) { - MDNode* MetaNode = HintNode->getOperand(i); - Value* FHint = dyn_cast<ValueAsMetadata>(MetaNode->getOperand(0).get())->getValue(); - if(F == FHint) - return visc::CPU_TARGET; - } - - HintNode = M->getOrInsertNamedMetadata("visc_hint_gpu"); - for (unsigned i = 0; i < HintNode->getNumOperands(); i++) { - MDNode* MetaNode = HintNode->getOperand(i); - Value* FHint = dyn_cast<ValueAsMetadata>(MetaNode->getOperand(0).get())->getValue(); - if(F == FHint) - return visc::GPU_TARGET; - } - - HintNode = M->getOrInsertNamedMetadata("visc_hint_spir"); - for (unsigned i = 0; i < HintNode->getNumOperands(); i++) { - MDNode* MetaNode = HintNode->getOperand(i); - Value* FHint = dyn_cast<ValueAsMetadata>(MetaNode->getOperand(0).get())->getValue(); - if(F == FHint) - return visc::SPIR_TARGET; - } - - HintNode = M->getOrInsertNamedMetadata("visc_hint_cudnn"); - for (unsigned i = 0; i < HintNode->getNumOperands(); i++) { - MDNode* MetaNode = HintNode->getOperand(i); - Value* FHint = dyn_cast<ValueAsMetadata>(MetaNode->getOperand(0).get())->getValue(); - if(F == FHint) - return visc::CUDNN_TARGET; - } - - HintNode = M->getOrInsertNamedMetadata("visc_hint_promise"); - for (unsigned i = 0; i < HintNode->getNumOperands(); i++) { - MDNode* MetaNode = HintNode->getOperand(i); - Value* FHint = dyn_cast<ValueAsMetadata>(MetaNode->getOperand(0).get())->getValue(); - if(F == FHint) - return visc::PROMISE_TARGET; - } - - HintNode = M->getOrInsertNamedMetadata("visc_hint_cpu_gpu"); - for (unsigned i = 0; i < HintNode->getNumOperands(); i++) { - MDNode* MetaNode = HintNode->getOperand(i); - Value* FHint = dyn_cast<ValueAsMetadata>(MetaNode->getOperand(0).get())->getValue(); - if(F == FHint) - return visc::CPU_OR_GPU_TARGET; - } - - HintNode = M->getOrInsertNamedMetadata("visc_hint_cpu_spir"); - for (unsigned i = 0; i < HintNode->getNumOperands(); i++) { - MDNode* MetaNode = HintNode->getOperand(i); - Value* FHint = dyn_cast<ValueAsMetadata>(MetaNode->getOperand(0).get())->getValue(); - if(F == FHint) - return visc::CPU_OR_SPIR_TARGET; - } - - return visc::None; + return viscUtils::getPreferredTarget(N->getFuncPointer()); } bool CodeGenTraversal::preferredTargetIncludes(DFNode* N, visc::Target T) { @@ -431,16 +372,12 @@ std::vector<Value*> CodeGenTraversal::extractElements(Value* Aggregate, // Traverse the function F argument list to get argument at offset Argument* CodeGenTraversal::getArgumentAt(Function* F, unsigned offset) { DEBUG(errs() << "Finding argument " << offset << ":\n"); - assert((F->getFunctionType()->getNumParams() > offset && offset >= 0) + assert((F->getFunctionType()->getNumParams() > offset) && "Invalid offset to access arguments!"); - Argument* arg; - Function::arg_iterator i = F->arg_begin(), e = F->arg_end(); - for(; offset != 0 && i!=e; i++) { - offset--; - } - arg = &*i; - DEBUG(errs() << "\t" << *arg <<"\n"); - return arg; + + Function::arg_iterator ArgIt = F->arg_begin() + offset; + Argument *Arg = &*ArgIt; + return Arg; } void CodeGenTraversal::initTimerAPI() { -- GitLab