[llvm-branch-commits] [llvm] f2cad4a - Revert "[RISCV] Simplify getStackAdjBase. NFC (#129281)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Feb 28 14:49:51 PST 2025


Author: Craig Topper
Date: 2025-02-28T14:49:49-08:00
New Revision: f2cad4a242ebe98122c5667d24aca8c80d2e0de4

URL: https://github.com/llvm/llvm-project/commit/f2cad4a242ebe98122c5667d24aca8c80d2e0de4
DIFF: https://github.com/llvm/llvm-project/commit/f2cad4a242ebe98122c5667d24aca8c80d2e0de4.diff

LOG: Revert "[RISCV] Simplify getStackAdjBase. NFC (#129281)"

This reverts commit 22965dc5f9c72d6b411458d4115e05a310d619eb.

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.h b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.h
index b2b604ff83719..8175431f99e32 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.h
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.h
@@ -629,13 +629,49 @@ inline unsigned encodeRlist(MCRegister EndReg, bool IsRV32E = false) {
 inline static unsigned getStackAdjBase(unsigned RlistVal, bool IsRV64) {
   assert(RlistVal != RLISTENCODE::INVALID_RLIST &&
          "{ra, s0-s10} is not supported, s11 must be included.");
-  unsigned NumRegs = (RlistVal - RLISTENCODE::RA) + 1;
-  // s10 and s11 are saved together.
-  if (RlistVal == RLISTENCODE::RA_S0_S11)
-    ++NumRegs;
-
-  unsigned RegSize = IsRV64 ? 8 : 4;
-  return alignTo(NumRegs * RegSize, 16);
+  if (!IsRV64) {
+    switch (RlistVal) {
+    case RLISTENCODE::RA:
+    case RLISTENCODE::RA_S0:
+    case RLISTENCODE::RA_S0_S1:
+    case RLISTENCODE::RA_S0_S2:
+      return 16;
+    case RLISTENCODE::RA_S0_S3:
+    case RLISTENCODE::RA_S0_S4:
+    case RLISTENCODE::RA_S0_S5:
+    case RLISTENCODE::RA_S0_S6:
+      return 32;
+    case RLISTENCODE::RA_S0_S7:
+    case RLISTENCODE::RA_S0_S8:
+    case RLISTENCODE::RA_S0_S9:
+      return 48;
+    case RLISTENCODE::RA_S0_S11:
+      return 64;
+    }
+  } else {
+    switch (RlistVal) {
+    case RLISTENCODE::RA:
+    case RLISTENCODE::RA_S0:
+      return 16;
+    case RLISTENCODE::RA_S0_S1:
+    case RLISTENCODE::RA_S0_S2:
+      return 32;
+    case RLISTENCODE::RA_S0_S3:
+    case RLISTENCODE::RA_S0_S4:
+      return 48;
+    case RLISTENCODE::RA_S0_S5:
+    case RLISTENCODE::RA_S0_S6:
+      return 64;
+    case RLISTENCODE::RA_S0_S7:
+    case RLISTENCODE::RA_S0_S8:
+      return 80;
+    case RLISTENCODE::RA_S0_S9:
+      return 96;
+    case RLISTENCODE::RA_S0_S11:
+      return 112;
+    }
+  }
+  llvm_unreachable("Unexpected RlistVal");
 }
 
 void printRlist(unsigned SlistEncode, raw_ostream &OS);


        


More information about the llvm-branch-commits mailing list