================
@@ -3845,9 +3845,22 @@ SDValue
DAGTypeLegalizer::SplitVecOp_EXTRACT_SUBVECTOR(SDNode *N) {
unsigned NumResultElts = SubVT.getVectorMinNumElements();
if (IdxVal < LoEltsMin) {
- assert(IdxVal + NumResultElts <= LoEltsMin &&
- "Extracted subvector crosses vector split!");
- return DAG.getNode(ISD::EXTRACT_SUBVECTOR, dl, SubVT, Lo, Idx);
+ // If the extracted elements are all in the low half, do a simple extract.
+ if (IdxVal + NumResultElts <= LoEltsMin)
+ return DAG.getNode(ISD::EXTRACT_SUBVECTOR, dl, SubVT, Lo, Idx);
+
+ // Extracted subvector crosses vector split, so we need to blend the two
----------------
arsenm wrote:
I wasn't sure what to do with scalable vectors. I tried to get a scalable case
hit here but failed
https://github.com/llvm/llvm-project/pull/154101
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits