Skip to content

Commit 06580de

Browse files
committed
fixup! fixup! [GlobalISel] Refactor extractParts()
1 parent 6f22854 commit 06580de

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

llvm/include/llvm/CodeGen/GlobalISel/Utils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ bool extractParts(Register Reg, LLT RegTy, LLT MainTy, LLT &LeftoverTy,
262262
MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI);
263263

264264
/// Version which handles irregular sub-vector splits.
265-
void extractVectorParts(Register Reg, unsigned NumElst,
265+
void extractVectorParts(Register Reg, unsigned NumElts,
266266
SmallVectorImpl<Register> &VRegs,
267267
MachineIRBuilder &MIRBuilder, MachineRegisterInfo &MRI);
268268

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4893,7 +4893,7 @@ LegalizerHelper::fewerElementsVectorSeqReductions(MachineInstr &MI,
48934893

48944894
SmallVector<Register> SplitSrcs;
48954895
unsigned NumParts = SrcTy.getNumElements();
4896-
extractParts(SrcReg, NarrowTy, NumParts, SplitSrcs);
4896+
extractParts(SrcReg, NarrowTy, NumParts, SplitSrcs, MIRBuilder, MRI);
48974897
Register Acc = ScalarReg;
48984898
for (unsigned i = 0; i < NumParts; i++)
48994899
Acc = MIRBuilder.buildInstr(ScalarOpc, {NarrowTy}, {Acc, SplitSrcs[i]})

llvm/lib/CodeGen/GlobalISel/Utils.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,10 @@ bool llvm::extractParts(Register Reg, LLT RegTy, LLT MainTy, LLT &LeftoverTy,
507507
}
508508

509509
// Try to use unmerge for irregular vector split where possible
510+
// For example when splitting a <6 x i32> into <4 x i32> with <2 x i32>
511+
// leftover, it becomes:
512+
// <2 x i32> %2, <2 x i32>%3, <2 x i32> %4 = G_UNMERGE_VALUE <6 x i32> %1
513+
// <4 x i32> %5 = G_CONCAT_VECTOR <2 x i32> %2, <2 x i32> %3
510514
if (RegTy.isVector() && MainTy.isVector()) {
511515
unsigned RegNumElts = RegTy.getNumElements();
512516
unsigned MainNumElts = MainTy.getNumElements();

0 commit comments

Comments
 (0)