[llvm] [AArch64][SVE] Enable factor-3 scalable interleave operations (PR #200424)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 7 05:56:45 PDT 2026
================
@@ -34352,12 +34368,40 @@ AArch64TargetLowering::LowerFixedLengthIntToFPToSVE(SDValue Op,
}
}
+static SDValue lowerPredicateInterleaveWithPackedVectors(SDValue Op,
+ SelectionDAG &DAG) {
+ SDLoc DL(Op);
+ EVT OpVT = Op.getValueType();
+ assert(OpVT.isScalableVector() && OpVT.getVectorElementType() == MVT::i1 &&
+ Op->getNumOperands() == 3 && "Unexpected predicate interleave");
+
+ EVT PackedVT = getPackedSVEVectorVT(OpVT.getVectorElementCount());
+ SmallVector<SDValue, 3> PackedOps;
+ for (SDValue V : Op->ops())
+ PackedOps.push_back(DAG.getNode(ISD::ZERO_EXTEND, DL, PackedVT, V));
+
+ SmallVector<EVT, 3> PackedVTs(Op->getNumValues(), PackedVT);
+ SDValue PackedOp =
+ DAG.getNode(Op.getOpcode(), DL, DAG.getVTList(PackedVTs), PackedOps);
+
+ SDValue Zero = DAG.getConstant(0, DL, PackedVT);
+ SmallVector<SDValue, 3> Results;
+ for (unsigned I = 0; I != Op->getNumValues(); ++I)
----------------
david-arm wrote:
nit: You can replace `Op->getNumValues()` with 3 here I think
https://github.com/llvm/llvm-project/pull/200424
More information about the llvm-commits
mailing list