ekalda commented on code in PR #16782: URL: https://github.com/apache/tvm/pull/16782#discussion_r1551562798
########## src/tir/transforms/vectorize_loop.cc: ########## @@ -635,19 +701,22 @@ class Vectorizer : public StmtMutator, public ExprFunctor<PrimExpr(const PrimExp if (a.same_as(op->a) && b.same_as(op->b)) { return GetRef<PrimExpr>(op); } else { - int lanes = std::max(a.dtype().lanes(), b.dtype().lanes()); + int a_lanes = a.dtype().get_lanes_or_vscale_factor(); + int b_lanes = b.dtype().get_lanes_or_vscale_factor(); + int lanes = std::max(a_lanes, b_lanes); if (lanes != 1) { const RampNode* b_ramp = b.as<RampNode>(); const RampNode* a_ramp = a.as<RampNode>(); - if (a.dtype().lanes() == 1 && b_ramp) { + if (!a.dtype().is_scalable_or_fixed_length_vector() && b_ramp) { return Ramp(fcompute(a, b_ramp->base), fcompute(make_zero(b_ramp->stride.dtype()), b_ramp->stride), b_ramp->lanes); } - if (b.dtype().lanes() == 1 && a_ramp) { + if (!b.dtype().is_scalable_or_fixed_length_vector() && a_ramp) { Review Comment: Done ########## src/tir/transforms/vectorize_loop.cc: ########## @@ -182,21 +199,29 @@ class Vectorizer : public StmtMutator, public ExprFunctor<PrimExpr(const PrimExp if (a.same_as(op->a) && b.same_as(op->b)) { return GetRef<PrimExpr>(op); } else { - // TODO(ekalda): P5 in https://github.com/apache/tvm/issues/16455 - int lanes = std::max(a.dtype().lanes(), b.dtype().lanes()); - if (lanes != 1) { + bool is_vec_a = a.dtype().is_scalable_or_fixed_length_vector(); + bool is_vec_b = b.dtype().is_scalable_or_fixed_length_vector(); + if (is_vec_a && is_vec_b) { + // Let's not multiply scalable and fixed length vectors + ICHECK(a.dtype().is_scalable_vector() == b.dtype().is_scalable_vector()); Review Comment: Done -- 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. To unsubscribe, e-mail: commits-unsubscr...@tvm.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org