Skip to content

Commit f2cad4a

Browse files
authored
Revert "[RISCV] Simplify getStackAdjBase. NFC (#129281)"
This reverts commit 22965dc.
1 parent 22965dc commit f2cad4a

File tree

1 file changed

+43
-7
lines changed

1 file changed

+43
-7
lines changed

llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.h

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -629,13 +629,49 @@ inline unsigned encodeRlist(MCRegister EndReg, bool IsRV32E = false) {
629629
inline static unsigned getStackAdjBase(unsigned RlistVal, bool IsRV64) {
630630
assert(RlistVal != RLISTENCODE::INVALID_RLIST &&
631631
"{ra, s0-s10} is not supported, s11 must be included.");
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);
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");
639675
}
640676

641677
void printRlist(unsigned SlistEncode, raw_ostream &OS);

0 commit comments

Comments
 (0)