================
@@ -845,15 +847,25 @@ struct StreamingVLOpConversion
     auto loc = streamingVlOp.getLoc();
     auto i64Type = rewriter.getI64Type();
     auto *intrOp = [&]() -> Operation * {
+      auto cntsd = arm_sme::aarch64_sme_cntsd::create(rewriter, loc, i64Type);
       switch (streamingVlOp.getTypeSize()) {
-      case arm_sme::TypeSize::Byte:
-        return arm_sme::aarch64_sme_cntsb::create(rewriter, loc, i64Type);
-      case arm_sme::TypeSize::Half:
-        return arm_sme::aarch64_sme_cntsh::create(rewriter, loc, i64Type);
-      case arm_sme::TypeSize::Word:
-        return arm_sme::aarch64_sme_cntsw::create(rewriter, loc, i64Type);
+      case arm_sme::TypeSize::Byte: {
+        auto mul = arith::ConstantIndexOp::create(rewriter, loc, 8);
+        auto mul64 = arith::IndexCastOp::create(rewriter, loc, i64Type, mul);
+        return arith::MulIOp::create(rewriter, loc, cntsd, mul64);
+      }
+      case arm_sme::TypeSize::Half: {
+        auto mul = arith::ConstantIndexOp::create(rewriter, loc, 4);
+        auto mul64 = arith::IndexCastOp::create(rewriter, loc, i64Type, mul);
+        return arith::MulIOp::create(rewriter, loc, cntsd, mul64);
+      }
+      case arm_sme::TypeSize::Word: {
+        auto mul = arith::ConstantIndexOp::create(rewriter, loc, 2);
+        auto mul64 = arith::IndexCastOp::create(rewriter, loc, i64Type, mul);
+        return arith::MulIOp::create(rewriter, loc, cntsd, mul64);
+      }
       case arm_sme::TypeSize::Double:
-        return arm_sme::aarch64_sme_cntsd::create(rewriter, loc, i64Type);
+        return cntsd;
       }
       llvm_unreachable("unknown type size in StreamingVLOpConversion");
     }();
----------------
kmclaughlin-arm wrote:

I've removed the lambda and added getSizeInBytes in Utils.cpp, as there seemed 
to be similar helpers in there for SME types.

https://github.com/llvm/llvm-project/pull/154761
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to