[llvm] [RISCV] Promote i8/i16/i32 scalable vector CLMUL to i64 CLMUL with Zvbc. (PR #184265)

Ramkumar Ramachandra via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 3 05:15:38 PST 2026


================
@@ -8921,6 +8932,18 @@ SDValue RISCVTargetLowering::LowerOperation(SDValue Op,
       return lowerToScalableOp(Op, DAG);
     assert(Op.getOpcode() != ISD::CTTZ);
     return lowerCTLZ_CTTZ_ZERO_UNDEF(Op, DAG);
+  case ISD::CLMUL: {
+    assert(Op.getValueType().isScalableVector() && Subtarget.hasStdExtZvbc() &&
+           "Unexpected custom legalisation");
+    // Promote to i64 vector.
+    MVT VT = Op.getSimpleValueType();
+    MVT I64VecVT = MVT::getVectorVT(MVT::i64, VT.getVectorElementCount());
----------------
artagnon wrote:

```suggestion
    MVT I64VecVT = VT.changeElementType(MVT::i64);
```

https://github.com/llvm/llvm-project/pull/184265


More information about the llvm-commits mailing list