@@ -629,49 +629,13 @@ inline unsigned encodeRlist(MCRegister EndReg, bool IsRV32E = false) {
629
629
inline static unsigned getStackAdjBase (unsigned RlistVal, bool IsRV64) {
630
630
assert (RlistVal != RLISTENCODE::INVALID_RLIST &&
631
631
" {ra, s0-s10} is not supported, s11 must be included." );
632
- if (!IsRV64) {
633
- switch (RlistVal) {
634
- case RLISTENCODE::RA:
635
- case RLISTENCODE::RA_S0:
636
- case RLISTENCODE::RA_S0_S1:
637
- case RLISTENCODE::RA_S0_S2:
638
- return 16 ;
639
- case RLISTENCODE::RA_S0_S3:
640
- case RLISTENCODE::RA_S0_S4:
641
- case RLISTENCODE::RA_S0_S5:
642
- case RLISTENCODE::RA_S0_S6:
643
- return 32 ;
644
- case RLISTENCODE::RA_S0_S7:
645
- case RLISTENCODE::RA_S0_S8:
646
- case RLISTENCODE::RA_S0_S9:
647
- return 48 ;
648
- case RLISTENCODE::RA_S0_S11:
649
- return 64 ;
650
- }
651
- } else {
652
- switch (RlistVal) {
653
- case RLISTENCODE::RA:
654
- case RLISTENCODE::RA_S0:
655
- return 16 ;
656
- case RLISTENCODE::RA_S0_S1:
657
- case RLISTENCODE::RA_S0_S2:
658
- return 32 ;
659
- case RLISTENCODE::RA_S0_S3:
660
- case RLISTENCODE::RA_S0_S4:
661
- return 48 ;
662
- case RLISTENCODE::RA_S0_S5:
663
- case RLISTENCODE::RA_S0_S6:
664
- return 64 ;
665
- case RLISTENCODE::RA_S0_S7:
666
- case RLISTENCODE::RA_S0_S8:
667
- return 80 ;
668
- case RLISTENCODE::RA_S0_S9:
669
- return 96 ;
670
- case RLISTENCODE::RA_S0_S11:
671
- return 112 ;
672
- }
673
- }
674
- llvm_unreachable (" Unexpected RlistVal" );
632
+ unsigned NumRegs = (RlistVal - RLISTENCODE::RA) + 1 ;
633
+ // s10 and s11 are saved together.
634
+ if (RlistVal == RLISTENCODE::RA_S0_S11)
635
+ ++NumRegs;
636
+
637
+ unsigned RegSize = IsRV64 ? 8 : 4 ;
638
+ return alignTo (NumRegs * RegSize, 16 );
675
639
}
676
640
677
641
void printRlist (unsigned SlistEncode, raw_ostream &OS);
0 commit comments