[llvm-branch-commits] [llvm] [DAGCombiner][GlobalISel] Extend allMulUsesCanBeContracted with FPEXT pattern (PR #188116)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Apr 10 03:49:35 PDT 2026
================
@@ -6329,13 +6334,66 @@ bool CombinerHelper::allMulUsesCanBeContracted(const MachineInstr &MI) const {
if (Opcode == TargetOpcode::G_FADD || Opcode == TargetOpcode::G_FSUB)
continue;
- // G_FNEG use - contractable if all users of the fneg are G_FSUB.
+ // FNEG --> FSUB pattern
+ // Also handles FNEG --> FPEXT --> FSUB
if (Opcode == TargetOpcode::G_FNEG) {
Register FNegReg = UseMI.getOperand(0).getReg();
- for (const MachineInstr &FNegUser : MRI.use_nodbg_instructions(FNegReg)) {
- unsigned FNegUserOp = FNegUser.getOpcode();
- if (FNegUserOp != TargetOpcode::G_FSUB)
+ // ALL users of the FNEG must be contractable FSUBs or FPEXTs leading to
+ // FSUBs
+ for (const MachineInstr &FNegUseMI :
----------------
arsenm wrote:
Does this really need a loop over all uses, over all uses?
https://github.com/llvm/llvm-project/pull/188116
More information about the llvm-branch-commits
mailing list