[llvm] [AMDGPU] Implement vop3p complex pattern optmization for gisel (PR #130234)
Diana Picus via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 27 06:18:17 PDT 2025
================
@@ -4360,13 +4900,17 @@ AMDGPUInstructionSelector::selectVOP3PModsDOT(MachineOperand &Root) const {
MachineRegisterInfo &MRI
= Root.getParent()->getParent()->getParent()->getRegInfo();
- Register Src;
- unsigned Mods;
- std::tie(Src, Mods) = selectVOP3PModsImpl(Root.getReg(), MRI, true);
+ auto [Op, Mods] = selectVOP3PModsImpl(&Root, MRI, true);
+ if (!(Op->isReg()))
+ return {{
+ [=](MachineInstrBuilder &MIB) { MIB.addImm(getAllKindImm(Op)); },
+ [=](MachineInstrBuilder &MIB) { MIB.addImm(Mods); } // src_mods
+ }};
+ Op = getVReg(Op, &Root, RBI, MRI, TRI, TII);
return {{
- [=](MachineInstrBuilder &MIB) { MIB.addReg(Src); },
- [=](MachineInstrBuilder &MIB) { MIB.addImm(Mods); } // src_mods
+ [=](MachineInstrBuilder &MIB) { MIB.addReg(Op->getReg()); },
+ [=](MachineInstrBuilder &MIB) { MIB.addImm(Mods); } // src_mods
----------------
rovka wrote:
This is getting kind of long and complicated, can you just extract it into a helper and call from both selectVOP3PMods and selectVOP3PModsDOT? (With a flag to pass into selectVOP3PModsImpl, of course)
https://github.com/llvm/llvm-project/pull/130234
More information about the llvm-commits
mailing list