summaryrefslogtreecommitdiff
path: root/src/cpu/reg_class.hh
diff options
context:
space:
mode:
authorBradley Wang <radwang@ucdavis.edu>2018-07-19 18:23:29 -0700
committerBradley Wang <radwang@ucdavis.edu>2018-08-10 23:41:23 +0000
commitcd913125d11b01a584ad08b32d988b786c42fe39 (patch)
tree4bcf8021d9a355fb8afcbaa69fea034771ce8d40 /src/cpu/reg_class.hh
parent1da285dfcc31b904afc27e440544d006aae25b38 (diff)
downloadgem5-cd913125d11b01a584ad08b32d988b786c42fe39.tar.xz
cpu: Removed unnecessary file reg_class_impl.hh
Previously, reg_class_impl.hh was added in order to prevent a cyclic dependency between it and the_isa.hh (See http://reviews.gem5.org/r/3754). It was determined that this was not necessary. The two files had almost entirely the same includes, and the current test-suite including multiple gcc and clang compilers on both MacOS and Linux successfully built the library with all functionality moved into the reg_class.hh file. Change-Id: I0319e187b9eb280726a003951bb1ce315ffe17f5 Signed-off-by: Bradley Wang <radwang@ucdavis.edu> Reviewed-on: https://gem5-review.googlesource.com/11869 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src/cpu/reg_class.hh')
-rw-r--r--src/cpu/reg_class.hh23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/cpu/reg_class.hh b/src/cpu/reg_class.hh
index 27bf59b19..def275ee4 100644
--- a/src/cpu/reg_class.hh
+++ b/src/cpu/reg_class.hh
@@ -131,7 +131,12 @@ class RegId {
* constant zero value throughout the execution).
*/
- inline bool isZeroReg() const;
+ inline bool isZeroReg() const
+ {
+ return ((regClass == IntRegClass && regIdx == TheISA::ZeroReg) ||
+ (THE_ISA == ALPHA_ISA && regClass == FloatRegClass &&
+ regIdx == TheISA::ZeroReg));
+ }
/** @return true if it is an integer physical register. */
bool isIntReg() const { return regClass == IntRegClass; }
@@ -167,7 +172,21 @@ class RegId {
/** Index flattening.
* Required to be able to use a vector for the register mapping.
*/
- inline RegIndex flatIndex() const;
+ inline RegIndex flatIndex() const
+ {
+ switch (regClass) {
+ case IntRegClass:
+ case FloatRegClass:
+ case VecRegClass:
+ case CCRegClass:
+ case MiscRegClass:
+ return regIdx;
+ case VecElemClass:
+ return Scale*regIdx + elemIdx;
+ }
+ panic("Trying to flatten a register without class!");
+ return -1;
+ }
/** @} */
/** Elem accessor */