[llvm] [AMDGPU] Relax VOPD constraints for gfx12+ with data deps (PR #191264)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 9 13:02:08 PDT 2026
================
@@ -34,9 +34,38 @@ using namespace llvm;
#define DEBUG_TYPE "gcn-vopd-utils"
+static bool isMulticycleOp(const MachineInstr &MI) {
+ unsigned Opc = MI.getOpcode();
+ return AMDGPU::isDPMACCInstruction(Opc);
+}
+
+bool llvm::dataDependency(const MachineInstr &FirstMI,
+ const MachineInstr &SecondMI) {
+ const GCNSubtarget &ST = FirstMI.getMF()->getSubtarget<GCNSubtarget>();
+ const SIRegisterInfo *TRI = dyn_cast<SIRegisterInfo>(ST.getRegisterInfo());
+ for (const auto &Use : SecondMI.all_uses()) {
+ if (Use.isReg() && FirstMI.modifiesRegister(Use.getReg(), TRI))
+ return true;
+ }
+ return false;
+}
+
+// If SecondMI writes a source of FirstMI, we can
+// still form VOPD as SecondMI::FirstMI in cases where VOPD reads all sources
+// before writing any destination.
+bool llvm::isAntidependencyAllowed(const MachineInstr &OpX) {
+ const GCNSubtarget &ST = OpX.getMF()->getSubtarget<GCNSubtarget>();
----------------
arsenm wrote:
This kind of thing belongs in SIInstrInfo?
https://github.com/llvm/llvm-project/pull/191264
More information about the llvm-commits
mailing list