@@ -388,32 +388,18 @@ bool MipsExpandPseudo::expandAtomicBinOpSubword(
388388 Opcode = Mips::XOR;
389389 break ;
390390 case Mips::ATOMIC_LOAD_UMIN_I8_POSTRA:
391- IsUnsigned = true ;
392- IsMin = true ;
393- break ;
394391 case Mips::ATOMIC_LOAD_UMIN_I16_POSTRA:
395392 IsUnsigned = true ;
396- IsMin = true ;
397- break ;
393+ [[fallthrough]];
398394 case Mips::ATOMIC_LOAD_MIN_I8_POSTRA:
399- SEOp = Mips::SEB;
400- IsMin = true ;
401- break ;
402395 case Mips::ATOMIC_LOAD_MIN_I16_POSTRA:
403396 IsMin = true ;
404397 break ;
405398 case Mips::ATOMIC_LOAD_UMAX_I8_POSTRA:
406- IsUnsigned = true ;
407- IsMax = true ;
408- break ;
409399 case Mips::ATOMIC_LOAD_UMAX_I16_POSTRA:
410400 IsUnsigned = true ;
411- IsMax = true ;
412- break ;
401+ [[fallthrough]];
413402 case Mips::ATOMIC_LOAD_MAX_I8_POSTRA:
414- SEOp = Mips::SEB;
415- IsMax = true ;
416- break ;
417403 case Mips::ATOMIC_LOAD_MAX_I16_POSTRA:
418404 IsMax = true ;
419405 break ;
@@ -475,42 +461,14 @@ bool MipsExpandPseudo::expandAtomicBinOpSubword(
475461
476462 // For little endian we need to clear uninterested bits.
477463 if (STI->isLittle ()) {
478- if (!IsUnsigned) {
479- BuildMI (loopMBB, DL, TII->get (Mips::SRAV), OldVal)
480- .addReg (OldVal)
481- .addReg (ShiftAmnt);
482- BuildMI (loopMBB, DL, TII->get (Mips::SRAV), Incr)
483- .addReg (Incr)
484- .addReg (ShiftAmnt);
485- if (STI->hasMips32r2 ()) {
486- BuildMI (loopMBB, DL, TII->get (SEOp), OldVal).addReg (OldVal);
487- BuildMI (loopMBB, DL, TII->get (SEOp), Incr).addReg (Incr);
488- } else {
489- const unsigned ShiftImm = SEOp == Mips::SEH ? 16 : 24 ;
490- BuildMI (loopMBB, DL, TII->get (Mips::SLL), OldVal)
491- .addReg (OldVal, RegState::Kill)
492- .addImm (ShiftImm);
493- BuildMI (loopMBB, DL, TII->get (Mips::SRA), OldVal)
494- .addReg (OldVal, RegState::Kill)
495- .addImm (ShiftImm);
496- BuildMI (loopMBB, DL, TII->get (Mips::SLL), Incr)
497- .addReg (Incr, RegState::Kill)
498- .addImm (ShiftImm);
499- BuildMI (loopMBB, DL, TII->get (Mips::SRA), Incr)
500- .addReg (Incr, RegState::Kill)
501- .addImm (ShiftImm);
502- }
503- } else {
504- // and OldVal, OldVal, Mask
505- // and Incr, Incr, Mask
506- BuildMI (loopMBB, DL, TII->get (Mips::AND), OldVal)
507- .addReg (OldVal)
508- .addReg (Mask);
509- BuildMI (loopMBB, DL, TII->get (Mips::AND), Incr)
510- .addReg (Incr)
511- .addReg (Mask);
512- }
464+ // and OldVal, OldVal, Mask
465+ // and Incr, Incr, Mask
466+ BuildMI (loopMBB, DL, TII->get (Mips::AND), OldVal)
467+ .addReg (OldVal)
468+ .addReg (Mask);
469+ BuildMI (loopMBB, DL, TII->get (Mips::AND), Incr).addReg (Incr).addReg (Mask);
513470 }
471+
514472 // unsigned: sltu Scratch4, oldVal, Incr
515473 // signed: slt Scratch4, oldVal, Incr
516474 BuildMI (loopMBB, DL, TII->get (SLTScratch4), Scratch4)
0 commit comments