[llvm] [RISCV] Sources of vmerge shouldn't overlap V0 (PR #170070)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 1 23:01:30 PST 2025
================
@@ -387,23 +387,18 @@ bool RISCVVectorPeephole::convertAllOnesVMergeToVMv(MachineInstr &MI) const {
return true;
}
-bool RISCVVectorPeephole::isKnownSameDefs(Register A, Register B) const {
- if (A.isPhysical() || B.isPhysical())
- return false;
-
- auto LookThruVirtRegCopies = [this](Register Reg) {
- while (MachineInstr *Def = MRI->getUniqueVRegDef(Reg)) {
- if (!Def->isFullCopy())
- break;
- Register Src = Def->getOperand(1).getReg();
- if (!Src.isVirtual())
- break;
- Reg = Src;
- }
- return Reg;
- };
-
- return LookThruVirtRegCopies(A) == LookThruVirtRegCopies(B);
+// If \p Reg is defined by one or more COPYs of virtual registers, traverses
+/// the chain and returns the root non-COPY source.
----------------
topperc wrote:
Mismatched `//` and `///`
https://github.com/llvm/llvm-project/pull/170070
More information about the llvm-commits
mailing list