[llvm] Add `llvm.vector.partial.reduce.fadd` intrinsic (PR #159776)
Sander de Smalen via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 15 02:04:56 PDT 2025
================
@@ -12062,22 +12062,29 @@ SDValue TargetLowering::expandPartialReduceMLA(SDNode *N,
EVT::getVectorVT(*DAG.getContext(), AccVT.getVectorElementType(),
MulOpVT.getVectorElementCount());
- unsigned ExtOpcLHS = N->getOpcode() == ISD::PARTIAL_REDUCE_UMLA
- ? ISD::ZERO_EXTEND
- : ISD::SIGN_EXTEND;
- unsigned ExtOpcRHS = N->getOpcode() == ISD::PARTIAL_REDUCE_SMLA
- ? ISD::SIGN_EXTEND
- : ISD::ZERO_EXTEND;
+ unsigned ExtOpcLHS =
+ N->getOpcode() == ISD::PARTIAL_REDUCE_FMLA ? ISD::FP_EXTEND
+ : N->getOpcode() == ISD::PARTIAL_REDUCE_UMLA ? ISD::ZERO_EXTEND
+ : ISD::SIGN_EXTEND;
+ unsigned ExtOpcRHS =
+ N->getOpcode() == ISD::PARTIAL_REDUCE_FMLA ? ISD::FP_EXTEND
+ : N->getOpcode() == ISD::PARTIAL_REDUCE_SMLA ? ISD::SIGN_EXTEND
+ : ISD::ZERO_EXTEND;
----------------
sdesmalen-arm wrote:
The nested ternary operator is a bit confusing, it's better to write it like this:
```suggestion
unsigned ExtOpcLHS, ExtOpcRHS;
switch (N->getOpcode()) {
default:
llvm_unreachable("Unexpected opcode");
case ISD::PARTIAL_REDUCE_UMLA:
ExtOpcLHS = ExtOpcRHS = ISD::ZERO_EXTEND;
break;
case ISD::PARTIAL_REDUCE_SMLA:
ExtOpcLHS = ExtOpcRHS = ISD::SIGN_EXTEND;
break;
case ISD::PARTIAL_REDUCE_FMLA:
ExtOpcLHS = ExtOpcRHS = ISD::FP_EXTEND;
break;
}
```
https://github.com/llvm/llvm-project/pull/159776
More information about the llvm-commits
mailing list