[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