[llvm] [SelectionDAG] Improve type legalisation for PARTIAL_REDUCE_MLA (PR #130935)

Sander de Smalen via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 30 07:01:42 PDT 2025


================
@@ -3222,12 +3222,24 @@ void DAGTypeLegalizer::SplitVecRes_PARTIAL_REDUCE_MLA(SDNode *N, SDValue &Lo,
   SDLoc DL(N);
   SDValue Acc = N->getOperand(0);
   SDValue Input1 = N->getOperand(1);
+  SDValue Input2 = N->getOperand(2);
 
-  SDValue AccLo, AccHi, Input1Lo, Input1Hi, Input2Lo, Input2Hi;
+  SDValue AccLo, AccHi;
   std::tie(AccLo, AccHi) = DAG.SplitVector(Acc, DL);
-  std::tie(Input1Lo, Input1Hi) = DAG.SplitVector(Input1, DL);
-  std::tie(Input2Lo, Input2Hi) = DAG.SplitVector(N->getOperand(2), DL);
   unsigned Opcode = N->getOpcode();
+
+  // If the input types don't need splitting, just accumulate into the
+  // low part of the accumulator.
+  if (getTypeAction(Input1.getValueType()) == TargetLowering::TypeSplitVector) {
----------------
sdesmalen-arm wrote:

This condition should check that `Input1` does _not_ need splitting.
```suggestion
  if (getTypeAction(Input1.getValueType()) != TargetLowering::TypeSplitVector) {
```

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


More information about the llvm-commits mailing list