arch,cpu: Get rid of ISA_HAS_CC_REGS and its associated ifdefs.
authorGabe Black <gabeblack@google.com>
Tue, 5 Nov 2019 00:27:34 +0000 (16:27 -0800)
committerGabe Black <gabeblack@google.com>
Tue, 26 Nov 2019 03:01:32 +0000 (03:01 +0000)
This conditional compilation was unnecessary and makes gem5 more
brittle and harder to understand.

Change-Id: I63abaf2668252c988cdd4626ff6a462eb6f54b04
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22544
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/arm/registers.hh
src/arch/x86/registers.hh
src/cpu/simple_thread.hh
src/cpu/thread_context.cc

index a97a4ce25508a730a91a2fe008fdc4b9667deef4..84f382b9cef240852e95dd61260283c9a5281bd0 100644 (file)
@@ -102,8 +102,6 @@ const int INTRLVREG1 = INTRLVREG0 + 1;
 const int INTRLVREG2 = INTRLVREG0 + 2;
 const int INTRLVREG3 = INTRLVREG0 + 3;
 
-#define ISA_HAS_CC_REGS
-
 const int TotalNumRegs = NumIntRegs + NumFloatRegs + NumVecRegs +
     NumVecPredRegs + NumMiscRegs;
 
index 0590abe49bb547d79fb03f2f1790486587e70202..479eda118d9f8ee73686603a50016aa49cb36df5 100644 (file)
@@ -60,8 +60,6 @@ const int NumIntArchRegs = NUM_INTREGS;
 const int NumIntRegs = NumIntArchRegs + NumMicroIntRegs + NumImplicitIntRegs;
 const int NumCCRegs = NUM_CCREGS;
 
-#define ISA_HAS_CC_REGS
-
 // Each 128 bit xmm register is broken into two effective 64 bit registers.
 // Add 8 for the indices that are mapped over the fp stack
 const int NumFloatRegs =
index 033a0777a834f1ecef2c2dc814e429f7b26c8250..f25e62249786eea775559c87e1deacf901417a65 100644 (file)
@@ -109,9 +109,7 @@ class SimpleThread : public ThreadState, public ThreadContext
     std::array<RegVal, TheISA::NumIntRegs> intRegs;
     std::array<VecRegContainer, TheISA::NumVecRegs> vecRegs;
     std::array<VecPredRegContainer, TheISA::NumVecPredRegs> vecPredRegs;
-#ifdef ISA_HAS_CC_REGS
     std::array<RegVal, TheISA::NumCCRegs> ccRegs;
-#endif
     TheISA::ISA *const isa;    // one "instance" of the current ISA.
 
     TheISA::PCState _pcState;
@@ -299,9 +297,7 @@ class SimpleThread : public ThreadState, public ThreadContext
             vec_reg.zero();
         for (auto &pred_reg: vecPredRegs)
             pred_reg.reset();
-#ifdef ISA_HAS_CC_REGS
         ccRegs.fill(0);
-#endif
         isa->clear();
     }
 
@@ -468,7 +464,6 @@ class SimpleThread : public ThreadState, public ThreadContext
     RegVal
     readCCReg(RegIndex reg_idx) const override
     {
-#ifdef ISA_HAS_CC_REGS
         int flatIndex = isa->flattenCCIndex(reg_idx);
         assert(0 <= flatIndex);
         assert(flatIndex < TheISA::NumCCRegs);
@@ -476,10 +471,6 @@ class SimpleThread : public ThreadState, public ThreadContext
         DPRINTF(CCRegs, "Reading CC reg %d (%d) as %#x.\n",
                 reg_idx, flatIndex, regVal);
         return regVal;
-#else
-        panic("Tried to read a CC register.");
-        return 0;
-#endif
     }
 
     void
@@ -538,15 +529,11 @@ class SimpleThread : public ThreadState, public ThreadContext
     void
     setCCReg(RegIndex reg_idx, RegVal val) override
     {
-#ifdef ISA_HAS_CC_REGS
         int flatIndex = isa->flattenCCIndex(reg_idx);
         assert(flatIndex < TheISA::NumCCRegs);
         DPRINTF(CCRegs, "Setting CC reg %d (%d) to %#x.\n",
                 reg_idx, flatIndex, val);
         setCCRegFlat(flatIndex, val);
-#else
-        panic("Tried to set a CC register.");
-#endif
     }
 
     TheISA::PCState pcState() const override { return _pcState; }
@@ -707,22 +694,8 @@ class SimpleThread : public ThreadState, public ThreadContext
         vecPredRegs[reg] = val;
     }
 
-#ifdef ISA_HAS_CC_REGS
     RegVal readCCRegFlat(RegIndex idx) const override { return ccRegs[idx]; }
     void setCCRegFlat(RegIndex idx, RegVal val) override { ccRegs[idx] = val; }
-#else
-    RegVal
-    readCCRegFlat(RegIndex idx) const override
-    {
-        panic("readCCRegFlat w/no CC regs!\n");
-    }
-
-    void
-    setCCRegFlat(RegIndex idx, RegVal val) override
-    {
-        panic("setCCRegFlat w/no CC regs!\n");
-    }
-#endif
 };
 
 
index dea39015f107942eb3aecc612f02bc0401a35db0..f8c422c98021d9873ebccbbe74386a8b332ff5f2 100644 (file)
@@ -191,12 +191,12 @@ serialize(const ThreadContext &tc, CheckpointOut &cp)
         intRegs[i] = tc.readIntRegFlat(i);
     SERIALIZE_ARRAY(intRegs, NumIntRegs);
 
-#ifdef ISA_HAS_CC_REGS
-    RegVal ccRegs[NumCCRegs];
-    for (int i = 0; i < NumCCRegs; ++i)
-        ccRegs[i] = tc.readCCRegFlat(i);
-    SERIALIZE_ARRAY(ccRegs, NumCCRegs);
-#endif
+    if (NumCCRegs) {
+        RegVal ccRegs[NumCCRegs];
+        for (int i = 0; i < NumCCRegs; ++i)
+            ccRegs[i] = tc.readCCRegFlat(i);
+        SERIALIZE_ARRAY(ccRegs, NumCCRegs);
+    }
 
     tc.pcState().serialize(cp);
 
@@ -232,12 +232,12 @@ unserialize(ThreadContext &tc, CheckpointIn &cp)
     for (int i = 0; i < NumIntRegs; ++i)
         tc.setIntRegFlat(i, intRegs[i]);
 
-#ifdef ISA_HAS_CC_REGS
-    RegVal ccRegs[NumCCRegs];
-    UNSERIALIZE_ARRAY(ccRegs, NumCCRegs);
-    for (int i = 0; i < NumCCRegs; ++i)
-        tc.setCCRegFlat(i, ccRegs[i]);
-#endif
+    if (NumCCRegs) {
+        RegVal ccRegs[NumCCRegs];
+        UNSERIALIZE_ARRAY(ccRegs, NumCCRegs);
+        for (int i = 0; i < NumCCRegs; ++i)
+            tc.setCCRegFlat(i, ccRegs[i]);
+    }
 
     PCState pcState;
     pcState.unserialize(cp);