[llvm] [IR][REVEC] Define llvm.vector.repeat intrinsic (PR #208212)

Gaƫtan Bossu via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 23 05:02:09 PDT 2026


================
@@ -8261,6 +8293,33 @@ SDValue DAGTypeLegalizer::WidenVecOp_CONCAT_VECTORS(SDNode *N) {
   return DAG.getBuildVector(VT, dl, Ops);
 }
 
+SDValue DAGTypeLegalizer::WidenVecOp_VECTOR_REPEAT(SDNode *N) {
+  SDLoc DL(N);
+  EVT VT = N->getValueType(0);
+  SDValue Src = N->getOperand(0);
+  EVT SrcVT = Src.getValueType();
+  EVT WidenedSrcVT = TLI.getTypeToTransformTo(*DAG.getContext(), SrcVT);
+
+  if (!WidenedSrcVT.getVectorElementCount().hasKnownScalarFactor(
+          SrcVT.getVectorElementCount()))
----------------
gbossu wrote:

I'm probably being overly cautious here, but I'm guessing `TLI.getTypeToTransformTo` could potentially turn a fixed vector type into a scalable one? In which case I'd rather keep `hasKnownScalarFactor` and have `DAG.getNode(ISD::VECTOR_REPEAT, ...)` assert that the types are not compatible.

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


More information about the llvm-commits mailing list