Skip to content

Commit c760d22

Browse files
committed
fixup! [AArch64][GlobalISel] Combine vecreduce(ext) to {U/S}ADDLV
1 parent 0ed325d commit c760d22

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
@@ -434,11 +434,13 @@ bool matchExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
434434
LLT ExtSrcTy = MRI.getType(ExtSrcReg);
435435
LLT DstTy = MRI.getType(MI.getOperand(0).getReg());
436436
if ((DstTy.getScalarSizeInBits() == 16 &&
437-
ExtSrcTy.getNumElements() % 8 == 0) ||
437+
ExtSrcTy.getNumElements() % 8 == 0 && ExtSrcTy.getNumElements() < 256) ||
438438
(DstTy.getScalarSizeInBits() == 32 &&
439-
ExtSrcTy.getNumElements() % 4 == 0) ||
439+
ExtSrcTy.getNumElements() % 4 == 0 &&
440+
ExtSrcTy.getNumElements() < 65536) ||
440441
(DstTy.getScalarSizeInBits() == 64 &&
441-
ExtSrcTy.getNumElements() % 4 == 0)) {
442+
ExtSrcTy.getNumElements() % 4 == 0 &&
443+
ExtSrcTy.getNumElements() < 4294967296)) {
442444
std::get<0>(MatchInfo) = ExtSrcReg;
443445
return true;
444446
}
@@ -539,12 +541,9 @@ void applyExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
539541
Register outReg;
540542
if (WorkingRegisters.size() > 1) {
541543
outReg = B.buildAdd(MidScalarLLT, WorkingRegisters[0], WorkingRegisters[1])
542-
->getOperand(0)
543-
.getReg();
544+
.getReg(0);
544545
for (unsigned I = 2; I < WorkingRegisters.size(); I++) {
545-
outReg = B.buildAdd(MidScalarLLT, outReg, WorkingRegisters[I])
546-
->getOperand(0)
547-
.getReg();
546+
outReg = B.buildAdd(MidScalarLLT, outReg, WorkingRegisters[I]).getReg(0);
548547
}
549548
} else {
550549
outReg = WorkingRegisters[0];

0 commit comments

Comments
 (0)