@@ -435,11 +435,9 @@ bool matchExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
435
435
if ((DstTy.getScalarSizeInBits () == 16 &&
436
436
ExtSrcTy.getNumElements () % 8 == 0 && ExtSrcTy.getNumElements () < 256 ) ||
437
437
(DstTy.getScalarSizeInBits () == 32 &&
438
- ExtSrcTy.getNumElements () % 4 == 0 &&
439
- ExtSrcTy.getNumElements () < 65536 ) ||
438
+ ExtSrcTy.getNumElements () % 4 == 0 ) ||
440
439
(DstTy.getScalarSizeInBits () == 64 &&
441
- ExtSrcTy.getNumElements () % 4 == 0 &&
442
- ExtSrcTy.getNumElements () < 4294967296 )) {
440
+ ExtSrcTy.getNumElements () % 4 == 0 )) {
443
441
std::get<0 >(MatchInfo) = ExtSrcReg;
444
442
return true ;
445
443
}
@@ -493,8 +491,7 @@ void applyExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
493
491
494
492
unsigned MidScalarSize = MainTy.getScalarSizeInBits () * 2 ;
495
493
LLT MidScalarLLT = LLT::scalar (MidScalarSize);
496
- Register zeroReg =
497
- B.buildConstant (LLT::scalar (64 ), 0 )->getOperand (0 ).getReg ();
494
+ Register zeroReg = B.buildConstant (LLT::scalar (64 ), 0 ).getReg (0 );
498
495
for (unsigned I = 0 ; I < WorkingRegisters.size (); I++) {
499
496
// If the number of elements is too small to build an instruction, extend
500
497
// its size before applying addlv
@@ -505,17 +502,15 @@ void applyExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
505
502
B.buildInstr (std::get<1 >(MatchInfo) ? TargetOpcode::G_SEXT
506
503
: TargetOpcode::G_ZEXT,
507
504
{LLT::fixed_vector (4 , 16 )}, {WorkingRegisters[I]})
508
- ->getOperand (0 )
509
- .getReg ();
505
+ .getReg (0 );
510
506
}
511
507
512
508
// Generate the {U/S}ADDLV instruction, whose output is always double of the
513
509
// Src's Scalar size
514
510
LLT addlvTy = MidScalarSize <= 32 ? LLT::fixed_vector (4 , 32 )
515
511
: LLT::fixed_vector (2 , 64 );
516
- Register addlvReg = B.buildInstr (Opc, {addlvTy}, {WorkingRegisters[I]})
517
- ->getOperand (0 )
518
- .getReg ();
512
+ Register addlvReg =
513
+ B.buildInstr (Opc, {addlvTy}, {WorkingRegisters[I]}).getReg (0 );
519
514
520
515
// The output from {U/S}ADDLV gets placed in the lowest lane of a v4i32 or
521
516
// v2i64 register.
@@ -525,15 +520,13 @@ void applyExtUaddvToUaddlv(MachineInstr &MI, MachineRegisterInfo &MRI,
525
520
if (MidScalarSize == 32 || MidScalarSize == 64 ) {
526
521
WorkingRegisters[I] = B.buildInstr (AArch64::G_EXTRACT_VECTOR_ELT,
527
522
{MidScalarLLT}, {addlvReg, zeroReg})
528
- ->getOperand (0 )
529
- .getReg ();
523
+ .getReg (0 );
530
524
} else {
531
525
Register extractReg = B.buildInstr (AArch64::G_EXTRACT_VECTOR_ELT,
532
526
{LLT::scalar (32 )}, {addlvReg, zeroReg})
533
- ->getOperand (0 )
534
- .getReg ();
527
+ .getReg (0 );
535
528
WorkingRegisters[I] =
536
- B.buildTrunc ({MidScalarLLT}, {extractReg})-> getOperand ( 0 ) .getReg ();
529
+ B.buildTrunc ({MidScalarLLT}, {extractReg}).getReg (0 );
537
530
}
538
531
}
539
532
0 commit comments