diff options
author | Jay Foad <jay.foad@amd.com> | 2025-05-16 16:54:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-16 16:54:34 +0100 |
commit | e30301aaecd24141cbdcd740aa4c16c0d9b05307 (patch) | |
tree | 10e4c0222f53d588a221cc047acda536bd1527ec /llvm/lib/CodeGen/MachineCopyPropagation.cpp | |
parent | be6c1684c058ff40b5cb29e7eb88f06f72dd50df (diff) | |
download | llvm-e30301aaecd24141cbdcd740aa4c16c0d9b05307.zip llvm-e30301aaecd24141cbdcd740aa4c16c0d9b05307.tar.gz llvm-e30301aaecd24141cbdcd740aa4c16c0d9b05307.tar.bz2 |
[MachineCopyPropagation] Make use of lane mask info in basic block liveins (#140248)
Diffstat (limited to 'llvm/lib/CodeGen/MachineCopyPropagation.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineCopyPropagation.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/MachineCopyPropagation.cpp b/llvm/lib/CodeGen/MachineCopyPropagation.cpp index 6eab87c..6af3154 100644 --- a/llvm/lib/CodeGen/MachineCopyPropagation.cpp +++ b/llvm/lib/CodeGen/MachineCopyPropagation.cpp @@ -553,9 +553,12 @@ void MachineCopyPropagation::readSuccessorLiveIns( // If a copy result is livein to a successor, it is not dead. for (const MachineBasicBlock *Succ : MBB.successors()) { for (const auto &LI : Succ->liveins()) { - for (MCRegUnit Unit : TRI->regunits(LI.PhysReg)) { - if (MachineInstr *Copy = Tracker.findCopyForUnit(Unit, *TRI)) - MaybeDeadCopies.remove(Copy); + for (MCRegUnitMaskIterator U(LI.PhysReg, TRI); U.isValid(); ++U) { + auto [Unit, Mask] = *U; + if ((Mask & LI.LaneMask).any()) { + if (MachineInstr *Copy = Tracker.findCopyForUnit(Unit, *TRI)) + MaybeDeadCopies.remove(Copy); + } } } } |