diff --git a/hpvm/include/SupportVISC/VISCUtils.h b/hpvm/include/SupportVISC/VISCUtils.h index 9625846c399271992501d18b8f95320e0de467e0..f2c0d0d276b02bacca208de2b6e44d5bca688731 100644 --- a/hpvm/include/SupportVISC/VISCUtils.h +++ b/hpvm/include/SupportVISC/VISCUtils.h @@ -539,24 +539,26 @@ visc::Target getPreferredTarget(Function* F) { DEBUG(errs() << "Finding preferred target for " << F->getName() << "\n"); Module* M = F->getParent(); - auto PrefTarget = [=](StringRef Name) { + auto FoundPrefTarget = [=](StringRef Name) { NamedMDNode* HintNode = M->getOrInsertNamedMetadata(Name); for(unsigned i = 0; i < HintNode->getNumOperands(); i++) { MDNode* N = HintNode->getOperand(i); Value* FHint = dyn_cast<ValueAsMetadata>(N->getOperand(0).get())->getValue(); if(F == FHint) return true; - } + } + return false; }; - - if(PrefTarget("visc_hint_gpu")) return visc::GPU_TARGET; - if(PrefTarget("visc_hint_spir")) return visc::SPIR_TARGET; - if(PrefTarget("visc_hint_cudnn")) return visc::CUDNN_TARGET; - if(PrefTarget("visc_hint_promise")) return visc::PROMISE_TARGET; - if(PrefTarget("visc_hint_cpu_gpu")) return visc::CPU_OR_GPU_TARGET; - if(PrefTarget("visc_hint_cpu_spir")) return visc::CPU_OR_SPIR_TARGET; - - return visc::CPU_TARGET; + + if(FoundPrefTarget("visc_hint_cpu")) return visc::CPU_TARGET; + if(FoundPrefTarget("visc_hint_gpu")) return visc::GPU_TARGET; + if(FoundPrefTarget("visc_hint_spir")) return visc::SPIR_TARGET; + if(FoundPrefTarget("visc_hint_cudnn")) return visc::CUDNN_TARGET; + if(FoundPrefTarget("visc_hint_promise")) return visc::PROMISE_TARGET; + if(FoundPrefTarget("visc_hint_cpu_gpu")) return visc::CPU_OR_GPU_TARGET; + if(FoundPrefTarget("visc_hint_cpu_spir")) return visc::CPU_OR_SPIR_TARGET; + + return visc::None; }