@@ -388,32 +388,18 @@ bool MipsExpandPseudo::expandAtomicBinOpSubword(
388
388
Opcode = Mips::XOR;
389
389
break ;
390
390
case Mips::ATOMIC_LOAD_UMIN_I8_POSTRA:
391
- IsUnsigned = true ;
392
- IsMin = true ;
393
- break ;
394
391
case Mips::ATOMIC_LOAD_UMIN_I16_POSTRA:
395
392
IsUnsigned = true ;
396
- IsMin = true ;
397
- break ;
393
+ [[fallthrough]];
398
394
case Mips::ATOMIC_LOAD_MIN_I8_POSTRA:
399
- SEOp = Mips::SEB;
400
- IsMin = true ;
401
- break ;
402
395
case Mips::ATOMIC_LOAD_MIN_I16_POSTRA:
403
396
IsMin = true ;
404
397
break ;
405
398
case Mips::ATOMIC_LOAD_UMAX_I8_POSTRA:
406
- IsUnsigned = true ;
407
- IsMax = true ;
408
- break ;
409
399
case Mips::ATOMIC_LOAD_UMAX_I16_POSTRA:
410
400
IsUnsigned = true ;
411
- IsMax = true ;
412
- break ;
401
+ [[fallthrough]];
413
402
case Mips::ATOMIC_LOAD_MAX_I8_POSTRA:
414
- SEOp = Mips::SEB;
415
- IsMax = true ;
416
- break ;
417
403
case Mips::ATOMIC_LOAD_MAX_I16_POSTRA:
418
404
IsMax = true ;
419
405
break ;
@@ -475,42 +461,14 @@ bool MipsExpandPseudo::expandAtomicBinOpSubword(
475
461
476
462
// For little endian we need to clear uninterested bits.
477
463
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);
513
470
}
471
+
514
472
// unsigned: sltu Scratch4, oldVal, Incr
515
473
// signed: slt Scratch4, oldVal, Incr
516
474
BuildMI (loopMBB, DL, TII->get (SLTScratch4), Scratch4)
0 commit comments