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