diff --git a/src/target/llvm/codegen_hexagon.cc b/src/target/llvm/codegen_hexagon.cc index 6ef5e064c0f1..5113957aa127 100644 --- a/src/target/llvm/codegen_hexagon.cc +++ b/src/target/llvm/codegen_hexagon.cc @@ -126,9 +126,16 @@ void CodeGenHexagon::InitTarget() { const auto hvx_length_feature = "+hvx-length"; // +hvx-length{64|128}b for (const std::string& f : llvm_target_->GetTargetFeatures()) { llvm::StringRef fs(f); +#if TVM_LLVM_VERSION >= 180 + if (!fs.starts_with(hvx_length_feature)) continue; + + ICHECK(fs.ends_with("b")) << "malformed target feature: " << f; +#else if (!fs.startswith(hvx_length_feature)) continue; ICHECK(fs.endswith("b")) << "malformed target feature: " << f; +#endif + int hvx_bytes = 0; size_t len_begin = std::strlen(hvx_length_feature); ICHECK(!fs.substr(len_begin, fs.size() - len_begin - 1).getAsInteger(10, hvx_bytes)) @@ -639,7 +646,11 @@ runtime::Module BuildHexagon(IRModule mod, Target target) { Map extra_args; if (target->attrs.count("mcpu")) { std::string mcpu = Downcast(target->attrs.at("mcpu")); +#if TVM_LLVM_VERSION >= 180 + ICHECK(llvm::StringRef(mcpu).starts_with("hexagon")) +#else ICHECK(llvm::StringRef(mcpu).startswith("hexagon")) +#endif << "unexpected -mcpu value in target:" << mcpu; extra_args.Set("hex_arch", llvm::StringRef(mcpu).drop_front(strlen("hexagon")).str()); } diff --git a/src/target/llvm/codegen_llvm.cc b/src/target/llvm/codegen_llvm.cc index 6566bb4291d8..6fc083d17ccf 100644 --- a/src/target/llvm/codegen_llvm.cc +++ b/src/target/llvm/codegen_llvm.cc @@ -372,7 +372,11 @@ std::unique_ptr CodeGenLLVM::Finish() { void CodeGenLLVM::HandleImport(const std::string& code) { llvm::StringRef code_str(code); std::unique_ptr mlib; +#if TVM_LLVM_VERSION >= 180 + if (code_str.ends_with(".ll") || code_str.ends_with(".bc")) { +#else if (code_str.endswith(".ll") || code_str.endswith(".bc")) { +#endif mlib = llvm_target_->GetInstance().LoadIR(code); } else { mlib = llvm_target_->GetInstance().ParseIR(code); diff --git a/src/target/llvm/llvm_instance.cc b/src/target/llvm/llvm_instance.cc index bd2eee85b022..dd5a3fb681ee 100644 --- a/src/target/llvm/llvm_instance.cc +++ b/src/target/llvm/llvm_instance.cc @@ -916,7 +916,11 @@ std::string LLVMTarget::GetTargetMetadata(const llvm::Module& module) { if (llvm::Metadata* tvm_target = module.getModuleFlag("tvm_target")) { auto* mdstr = llvm::cast(tvm_target); llvm::StringRef meta = mdstr->getString(); +#if TVM_LLVM_VERSION >= 180 + if (meta.starts_with("llvm")) { +#else if (meta.startswith("llvm")) { +#endif return meta.str(); } }