[llvm] test (PR #209608)

Guo Chen via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 14 13:00:10 PDT 2026


https://github.com/broxigarchen created https://github.com/llvm/llvm-project/pull/209608

None

>From be7a2e5ae30617027cc58996158ed2429478b95d Mon Sep 17 00:00:00 2001
From: guochen2 <guochen2 at amd.com>
Date: Tue, 14 Jul 2026 12:24:00 -0400
Subject: [PATCH] test

---
 llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp | 18 ++++++++++++++++++
 llvm/lib/Target/AMDGPU/SIRegisterInfo.h   |  5 +++++
 2 files changed, 23 insertions(+)

diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
index 619db2f61e0e9..8c775a78d3528 100644
--- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
@@ -4328,3 +4328,21 @@ SIRegisterInfo::getVRegFlagsOfReg(Register Reg,
     RegFlags.push_back("WWM_REG");
   return RegFlags;
 }
+
+bool SIRegisterInfo::shouldCoalesce(
+    MachineInstr *MI, const TargetRegisterClass *SrcRC, unsigned SubReg,
+    const TargetRegisterClass *DstRC, unsigned DstSubReg,
+    const TargetRegisterClass *NewRC, LiveIntervals &LIS) const {
+  assert(MI->isCopy() && "Only expecting COPY instructions");
+
+  // Do not coalesce if src is a constant, let RA decide if need to
+  // rematerialize
+  MachineFunction *MF = MI->getParent()->getParent();
+  MachineRegisterInfo &MRI = MF->getRegInfo();
+  MachineInstr *Def = MRI.getUniqueVRegDef(MI->getOperand(1).getReg());
+  if (Def && Def->isMoveImmediate())
+    return false;
+
+  return TargetRegisterInfo::shouldCoalesce(MI, SrcRC, SubReg, DstRC, DstSubReg,
+                                            NewRC, LIS);
+}
diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.h b/llvm/lib/Target/AMDGPU/SIRegisterInfo.h
index e464c9334ffea..01a94f56382d7 100644
--- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.h
+++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.h
@@ -506,6 +506,11 @@ class SIRegisterInfo final : public AMDGPUGenRegisterInfo {
                 ? 2.0
                 : 1.0);
   }
+
+  bool shouldCoalesce(MachineInstr *MI, const TargetRegisterClass *SrcRC,
+                      unsigned SubReg, const TargetRegisterClass *DstRC,
+                      unsigned DstSubReg, const TargetRegisterClass *NewRC,
+                      LiveIntervals &LIS) const override;
 };
 
 } // End namespace llvm



More information about the llvm-commits mailing list