Skip to content

Commit e1e0c38

Browse files
author
git apple-llvm automerger
committed
Merge commit 'c54d5c97564b' from llvm.org/main into next
2 parents 2ec340b + c54d5c9 commit e1e0c38

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2045,26 +2045,23 @@ bool CombinerHelper::matchCombineUnmergeMergeToPlainValues(
20452045
MachineInstr &MI, SmallVectorImpl<Register> &Operands) {
20462046
assert(MI.getOpcode() == TargetOpcode::G_UNMERGE_VALUES &&
20472047
"Expected an unmerge");
2048-
Register SrcReg =
2049-
peekThroughBitcast(MI.getOperand(MI.getNumOperands() - 1).getReg(), MRI);
2048+
auto &Unmerge = cast<GUnmerge>(MI);
2049+
Register SrcReg = peekThroughBitcast(Unmerge.getSourceReg(), MRI);
20502050

2051-
MachineInstr *SrcInstr = MRI.getVRegDef(SrcReg);
2052-
if (SrcInstr->getOpcode() != TargetOpcode::G_MERGE_VALUES &&
2053-
SrcInstr->getOpcode() != TargetOpcode::G_BUILD_VECTOR &&
2054-
SrcInstr->getOpcode() != TargetOpcode::G_CONCAT_VECTORS)
2051+
auto *SrcInstr = getOpcodeDef<GMergeLikeOp>(SrcReg, MRI);
2052+
if (!SrcInstr)
20552053
return false;
20562054

20572055
// Check the source type of the merge.
2058-
LLT SrcMergeTy = MRI.getType(SrcInstr->getOperand(1).getReg());
2059-
LLT Dst0Ty = MRI.getType(MI.getOperand(0).getReg());
2056+
LLT SrcMergeTy = MRI.getType(SrcInstr->getSourceReg(0));
2057+
LLT Dst0Ty = MRI.getType(Unmerge.getReg(0));
20602058
bool SameSize = Dst0Ty.getSizeInBits() == SrcMergeTy.getSizeInBits();
20612059
if (SrcMergeTy != Dst0Ty && !SameSize)
20622060
return false;
20632061
// They are the same now (modulo a bitcast).
20642062
// We can collect all the src registers.
2065-
for (unsigned Idx = 1, EndIdx = SrcInstr->getNumOperands(); Idx != EndIdx;
2066-
++Idx)
2067-
Operands.push_back(SrcInstr->getOperand(Idx).getReg());
2063+
for (unsigned Idx = 0; Idx < SrcInstr->getNumSources(); ++Idx)
2064+
Operands.push_back(SrcInstr->getSourceReg(Idx));
20682065
return true;
20692066
}
20702067

0 commit comments

Comments
 (0)