[llvm-branch-commits] [llvm] [DAGCombiner][GlobalISel] Extend allMulUsesCanBeContracted with FMA/FMAD pattern (PR #188117)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Apr 10 06:03:59 PDT 2026
================
@@ -6383,6 +6387,26 @@ bool CombinerHelper::allMulUsesCanBeContracted(
ExtUseOpcode == TargetOpcode::G_FSUB) {
continue;
}
+ if (ExtUseOpcode == TargetOpcode::G_FMA ||
+ ExtUseOpcode == TargetOpcode::G_FMAD) {
+ // FPEXT --> FMA/FMAD is only contractable if the FMA/FMAD is
+ // used by FADD or FSUB (chain reassociation can fire to
+ // eliminate the multiply).
+ Register FMAReg = FPExtUseMI.getOperand(0).getReg();
+ bool FMAUsedByAddSub = false;
+ for (const MachineInstr &FMAUseMI :
+ MRI.use_nodbg_instructions(FMAReg)) {
+ unsigned FMAUseOp = FMAUseMI.getOpcode();
----------------
arsenm wrote:
this can be an any_of
https://github.com/llvm/llvm-project/pull/188117
More information about the llvm-branch-commits
mailing list