[llvm] [RISCV] Add FMA support to combineOp_VLToVWOp_VL. (PR #100454)
Quentin Colombet via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 24 12:57:19 PDT 2024
================
@@ -14883,19 +14904,26 @@ static SDValue combineBinOp_VLToVWBinOp_VL(SDNode *N,
while (!Worklist.empty()) {
SDNode *Root = Worklist.pop_back_val();
- if (!NodeExtensionHelper::isSupportedRoot(Root, Subtarget))
- return SDValue();
NodeExtensionHelper LHS(Root, 0, DAG, Subtarget);
NodeExtensionHelper RHS(Root, 1, DAG, Subtarget);
- auto AppendUsersIfNeeded = [&Worklist,
+ auto AppendUsersIfNeeded = [&Worklist, &Subtarget,
&Inserted](const NodeExtensionHelper &Op) {
if (Op.needToPromoteOtherUsers()) {
- for (SDNode *TheUse : Op.OrigOperand->uses()) {
+ for (SDNode::use_iterator UI = Op.OrigOperand->use_begin(),
+ UE = Op.OrigOperand->use_end();
+ UI != UE; ++UI) {
+ SDNode *TheUse = *UI;
+ if (!NodeExtensionHelper::isSupportedRoot(TheUse, Subtarget))
+ return false;
+ // We only support the first 2 operands of FMA.
+ if (UI.getOperandNo() >= 2)
----------------
qcolombet wrote:
Should we assert that this is an FMA node?
I am wondering if it would make sense to assert if someone update `isSupportedRoot` and forget to update this part of the code.
What do you think?
https://github.com/llvm/llvm-project/pull/100454
More information about the llvm-commits
mailing list