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