@@ -434,11 +434,13 @@ bool matchExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
434
434
LLT ExtSrcTy = MRI.getType (ExtSrcReg);
435
435
LLT DstTy = MRI.getType (MI.getOperand (0 ).getReg ());
436
436
if ((DstTy.getScalarSizeInBits () == 16 &&
437
- ExtSrcTy.getNumElements () % 8 == 0 ) ||
437
+ ExtSrcTy.getNumElements () % 8 == 0 && ExtSrcTy. getNumElements () < 256 ) ||
438
438
(DstTy.getScalarSizeInBits () == 32 &&
439
- ExtSrcTy.getNumElements () % 4 == 0 ) ||
439
+ ExtSrcTy.getNumElements () % 4 == 0 &&
440
+ ExtSrcTy.getNumElements () < 65536 ) ||
440
441
(DstTy.getScalarSizeInBits () == 64 &&
441
- ExtSrcTy.getNumElements () % 4 == 0 )) {
442
+ ExtSrcTy.getNumElements () % 4 == 0 &&
443
+ ExtSrcTy.getNumElements () < 4294967296 )) {
442
444
std::get<0 >(MatchInfo) = ExtSrcReg;
443
445
return true ;
444
446
}
@@ -539,12 +541,9 @@ void applyExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
539
541
Register outReg;
540
542
if (WorkingRegisters.size () > 1 ) {
541
543
outReg = B.buildAdd (MidScalarLLT, WorkingRegisters[0 ], WorkingRegisters[1 ])
542
- ->getOperand (0 )
543
- .getReg ();
544
+ .getReg (0 );
544
545
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 );
548
547
}
549
548
} else {
550
549
outReg = WorkingRegisters[0 ];
0 commit comments