}
}
if (dtype.lanes() != 1) {
+#if TVM_LLVM_VERSION >= 110
+ return llvm::FixedVectorType::get(etype, dtype.lanes());
+#else
return llvm::VectorType::get(etype, dtype.lanes());
+#endif
} else {
return etype;
}
}
llvm::Value* CodeGenLLVM::CreateBroadcast(llvm::Value* value, int lanes) {
- llvm::Constant* undef = llvm::UndefValue::get(llvm::VectorType::get(value->getType(), lanes));
+#if TVM_LLVM_VERSION >= 110
+ llvm::Type* type = llvm::FixedVectorType::get(value->getType(), lanes);
+#else
+ llvm::Type* type = llvm::VectorType::get(value->getType(), lanes);
+#endif
+ llvm::Constant* undef = llvm::UndefValue::get(type);
llvm::Constant* zero = ConstInt32(0);
value = builder_->CreateInsertElement(undef, value, zero);
#if TVM_LLVM_VERSION >= 110
llvm::Value* CodeGenX86_64::CallVectorIntrin(llvm::Intrinsic::ID id, size_t intrin_lanes,
llvm::Type* result_ty,
-
const std::vector<llvm::Value*>& args) {
llvm::Function* f = llvm::Intrinsic::getDeclaration(module_.get(), id, {});
size_t num_elems = llvm::cast<llvm::VectorType>(result_ty)->getNumElements();
split_args.push_back(v);
}
}
- split_results.push_back(CallVectorIntrin(
- id, intrin_lanes, llvm::VectorType::get(result_ty->getScalarType(), intrin_lanes),
- split_args));
+#if TVM_LLVM_VERSION >= 110
+ llvm::Type* type = llvm::FixedVectorType::get(result_ty->getScalarType(), intrin_lanes);
+#else
+ llvm::Type* type = llvm::VectorType::get(result_ty->getScalarType(), intrin_lanes);
+#endif
+ split_results.push_back(CallVectorIntrin(id, intrin_lanes, type, split_args));
}
return CreateVecSlice(CreateVecConcat(split_results), 0, num_elems);
}