[LLVM] Use llvm::ElementCount with LLVM 11+ when creating vectors (#5265)
authorKrzysztof Parzyszek <kparzysz@quicinc.com>
Tue, 7 Apr 2020 22:49:07 +0000 (17:49 -0500)
committerGitHub <noreply@github.com>
Tue, 7 Apr 2020 22:49:07 +0000 (15:49 -0700)
LLVM 11 added support for scalable vectors, and now the number of
elements in a vector is represented by a llvm::ElementCount class,
not just a number.

src/target/llvm/codegen_llvm.cc

index bd2cd9f..28f4efd 100644 (file)
@@ -463,7 +463,12 @@ llvm::Value* CodeGenLLVM::CreateBroadcast(llvm::Value* value, int lanes) {
       llvm::VectorType::get(value->getType(), lanes));
   llvm::Constant* zero = ConstInt32(0);
   value = builder_->CreateInsertElement(undef, value, zero);
+#if TVM_LLVM_VERSION >= 110
+  llvm::Constant* mask =
+      llvm::ConstantVector::getSplat(llvm::ElementCount(lanes, /*Scalable=*/false), zero);
+#else
   llvm::Constant* mask = llvm::ConstantVector::getSplat(lanes, zero);
+#endif
   return builder_->CreateShuffleVector(value, undef, mask);
 }