From 223a07031f0a0c53e72c445675d52d6921eb6e8e Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Tue, 7 Mar 2023 14:58:15 +0000 Subject: [PATCH] arch-arm: Improve debugging of CC regs accesses As of now we are simply printing the CC reg index which is not particularly helpful. With this patch we actually print the (NZ|C|V) reg name. Change-Id: Ib4b56a372b25e5bc2b6b762d2ef3ff2084097cce Signed-off-by: Giacomo Travaglini Reviewed-by: Richard Cooper Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70718 Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/arch/arm/regs/cc.hh | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/arch/arm/regs/cc.hh b/src/arch/arm/regs/cc.hh index ba7552799a..474e48e9e9 100644 --- a/src/arch/arm/regs/cc.hh +++ b/src/arch/arm/regs/cc.hh @@ -61,10 +61,31 @@ enum : RegIndex NumRegs }; +const char * const RegName[NumRegs] = { + "nz", + "c", + "v", + "ge", + "fp", + "zero" +}; + } // namespace cc_reg -inline constexpr RegClass ccRegClass(CCRegClass, CCRegClassName, - cc_reg::NumRegs, debug::CCRegs); +class CCRegClassOps : public RegClassOps +{ + public: + std::string + regName(const RegId &id) const override + { + return cc_reg::RegName[id.index()]; + } +}; + +static inline CCRegClassOps ccRegClassOps; + +inline constexpr RegClass ccRegClass = RegClass(CCRegClass, CCRegClassName, + cc_reg::NumRegs, debug::CCRegs).ops(ccRegClassOps); namespace cc_reg { @@ -77,15 +98,6 @@ inline constexpr RegId Fp = ccRegClass[_FpIdx], Zero = ccRegClass[_ZeroIdx]; -const char * const RegName[NumRegs] = { - "nz", - "c", - "v", - "ge", - "fp", - "zero" -}; - } // namespace cc_reg enum ConditionCode