Skip to content

Commit 7f9aaa3

Browse files
committed
fixup! [AArch64][GlobalISel] Combine vecreduce(ext) to {U/S}ADDLV
1 parent 44808db commit 7f9aaa3

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

llvm/lib/Target/AArch64/GISel/AArch64PreLegalizerCombiner.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -433,11 +433,13 @@ bool matchExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
433433
LLT ExtSrcTy = MRI.getType(ExtSrcReg);
434434
LLT DstTy = MRI.getType(MI.getOperand(0).getReg());
435435
if ((DstTy.getScalarSizeInBits() == 16 &&
436-
ExtSrcTy.getNumElements() % 8 == 0) ||
436+
ExtSrcTy.getNumElements() % 8 == 0 && ExtSrcTy.getNumElements() < 256) ||
437437
(DstTy.getScalarSizeInBits() == 32 &&
438-
ExtSrcTy.getNumElements() % 4 == 0) ||
438+
ExtSrcTy.getNumElements() % 4 == 0 &&
439+
ExtSrcTy.getNumElements() < 65536) ||
439440
(DstTy.getScalarSizeInBits() == 64 &&
440-
ExtSrcTy.getNumElements() % 4 == 0)) {
441+
ExtSrcTy.getNumElements() % 4 == 0 &&
442+
ExtSrcTy.getNumElements() < 4294967296)) {
441443
std::get<0>(MatchInfo) = ExtSrcReg;
442444
return true;
443445
}
@@ -538,12 +540,9 @@ void applyExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
538540
Register outReg;
539541
if (WorkingRegisters.size() > 1) {
540542
outReg = B.buildAdd(MidScalarLLT, WorkingRegisters[0], WorkingRegisters[1])
541-
->getOperand(0)
542-
.getReg();
543+
.getReg(0);
543544
for (unsigned I = 2; I < WorkingRegisters.size(); I++) {
544-
outReg = B.buildAdd(MidScalarLLT, outReg, WorkingRegisters[I])
545-
->getOperand(0)
546-
.getReg();
545+
outReg = B.buildAdd(MidScalarLLT, outReg, WorkingRegisters[I]).getReg(0);
547546
}
548547
} else {
549548
outReg = WorkingRegisters[0];

0 commit comments

Comments
 (0)