Menooker commented on a change in pull request #5601:
URL: https://github.com/apache/incubator-tvm/pull/5601#discussion_r429022665
##########
File path: src/target/llvm/codegen_llvm.cc
##########
@@ -555,12 +558,48 @@ void CodeGenLLVM::CreateSerialFor(llvm::Value* begin,
llvm::Value* end, llvm::Va
builder_->SetInsertPoint(for_end);
}
+static llvm::Value* GetInt32VectorOrScalar(
+ llvm::IRBuilder<llvm::ConstantFolder, llvm::IRBuilderDefaultInserter>*
builder, uint32_t v,
+ int lanes) {
+ if (lanes == 1) {
+ return builder->getInt32(v);
+ } else {
+ std::vector<llvm::Constant*> consts;
+ for (int i = 0; i < lanes; i++) {
+ consts.emplace_back(builder->getInt32(v));
+ }
+ return llvm::ConstantVector::get(consts);
+ }
+}
+
// cast operatpr
llvm::Value* CodeGenLLVM::CreateCast(DataType from, DataType to, llvm::Value*
value) {
llvm::Type* target = DTypeToLLVMType(to);
if (value->getType() == target) return value;
if (to.is_handle()) {
return builder_->CreateBitCast(value, target);
+ } else if (to.is_float() && from.is_bfloat()) {
+ CHECK_EQ(from.bits(), 16);
Review comment:
Just 2 small questions.
Did you mean totally eliminating bf16 dtype in legalization pass? This will
bring much more complexity in the BF16Legalize pass, because we need to check
every TIR node to replace bf16 with int16. In contrast, current impl only
changes computation TIR nodes. And in the codegen, the bf16 generation is quite
simple, just adding another ‘else if’ in casting node and tvm dtype to llvm
type converter
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]