[llvm] [SelectionDAG] Fix result index and vector width in unrollExpandedOp (PR #225886)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 23 21:21:10 PDT 2026
================
@@ -5234,13 +5234,15 @@ void DAGTypeLegalizer::WidenVectorResult(SDNode *N, unsigned ResNo) {
// elements. If the wide vector op is eventually going to be expanded to
// scalar libcalls, then unroll into scalar ops now to avoid unnecessary
// libcalls on the undef elements.
- EVT VT = N->getValueType(0);
- EVT WideVecVT = TLI.getTypeToTransformTo(*DAG.getContext(), VT);
+ EVT ResVT = N->getValueType(ResNo);
+ EVT WideVecVT = TLI.getTypeToTransformTo(*DAG.getContext(), ResVT);
+ EVT VT0 = N->getValueType(0);
if (!TLI.isOperationLegalOrCustomOrPromote(N->getOpcode(), WideVecVT) &&
- TLI.isOperationExpandOrLibCall(N->getOpcode(), VT.getScalarType())) {
- Res = DAG.UnrollVectorOp(N, WideVecVT.getVectorNumElements());
+ TLI.isOperationExpandOrLibCall(N->getOpcode(), VT0.getScalarType())) {
+ SDValue Unrolled = DAG.UnrollVectorOp(N, WideVecVT.getVectorNumElements());
+ Res = SDValue(Unrolled.getNode(), ResNo);
----------------
topperc wrote:
Res = Unrolled.getValue(ResNo)
https://github.com/llvm/llvm-project/pull/225886
More information about the llvm-commits
mailing list