aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineCopyPropagation.cpp
diff options
context:
space:
mode:
authorJay Foad <jay.foad@amd.com>2025-05-16 16:54:34 +0100
committerGitHub <noreply@github.com>2025-05-16 16:54:34 +0100
commite30301aaecd24141cbdcd740aa4c16c0d9b05307 (patch)
tree10e4c0222f53d588a221cc047acda536bd1527ec /llvm/lib/CodeGen/MachineCopyPropagation.cpp
parentbe6c1684c058ff40b5cb29e7eb88f06f72dd50df (diff)
downloadllvm-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.cpp9
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);
+ }
}
}
}