arch-arm: Replace NumFloatV8ArchRegs with NumVecV8ArchRegs
authorGiacomo Travaglini <giacomo.travaglini@arm.com>
Mon, 18 Nov 2019 13:19:49 +0000 (13:19 +0000)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Tue, 10 Dec 2019 10:15:05 +0000 (10:15 +0000)
gem5-ARM is not using floatRegs anymore and moved towards the
vecRegs register file (which is used for SIMD&FP + SVE instructions)

Change-Id: I41cfbe10565e4e0db838f98626310a5b14edadb9
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23103
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/arm/insts/macromem.cc
src/arch/arm/kvm/armv8_cpu.cc
src/arch/arm/registers.hh

index eef2dfe27dc8ab9fb0bfe7751105e21a5ca0e906..7ed62f283ccb7204d48c8d04af69fd82b9ad8d09 100644 (file)
@@ -1123,7 +1123,7 @@ VldMultOp64::VldMultOp64(const char *mnem, ExtMachInst machInst,
                          uint8_t numStructElems, uint8_t numRegs, bool wb) :
     PredMacroOp(mnem, machInst, __opClass)
 {
-    RegIndex vx = NumFloatV8ArchRegs / 4;
+    RegIndex vx = NumVecV8ArchRegs;
     RegIndex rnsp = (RegIndex) makeSP((IntRegIndex) rn);
     bool baseIsSP = isSP((IntRegIndex) rnsp);
 
@@ -1208,7 +1208,7 @@ VstMultOp64::VstMultOp64(const char *mnem, ExtMachInst machInst,
                          uint8_t numStructElems, uint8_t numRegs, bool wb) :
     PredMacroOp(mnem, machInst, __opClass)
 {
-    RegIndex vx = NumFloatV8ArchRegs / 4;
+    RegIndex vx = NumVecV8ArchRegs;
     RegIndex rnsp = (RegIndex) makeSP((IntRegIndex) rn);
     bool baseIsSP = isSP((IntRegIndex) rnsp);
 
@@ -1297,7 +1297,7 @@ VldSingleOp64::VldSingleOp64(const char *mnem, ExtMachInst machInst,
     wb(false), replicate(false)
 
 {
-    RegIndex vx = NumFloatV8ArchRegs / 4;
+    RegIndex vx = NumVecV8ArchRegs;
     RegIndex rnsp = (RegIndex) makeSP((IntRegIndex) rn);
     bool baseIsSP = isSP((IntRegIndex) rnsp);
 
@@ -1370,7 +1370,7 @@ VstSingleOp64::VstSingleOp64(const char *mnem, ExtMachInst machInst,
     eSize(0), dataSize(0), numStructElems(0), index(0),
     wb(false), replicate(false)
 {
-    RegIndex vx = NumFloatV8ArchRegs / 4;
+    RegIndex vx = NumVecV8ArchRegs;
     RegIndex rnsp = (RegIndex) makeSP((IntRegIndex) rn);
     bool baseIsSP = isSP((IntRegIndex) rnsp);
 
index 2ac97441db22abeca988693a0e5f5833a92b8d33..cff138ce4fdc293ecb9489e4a58db4b848fbafac 100644 (file)
@@ -51,7 +51,7 @@ static_assert(NUM_XREGS == 31, "Unexpected number of aarch64 int. regs.");
 
 // The KVM interface accesses vector registers of 4 single precision
 // floats instead of individual registers.
-constexpr static unsigned NUM_QREGS = NumFloatV8ArchRegs / 4;
+constexpr static unsigned NUM_QREGS = NumVecV8ArchRegs;
 static_assert(NUM_QREGS == 32, "Unexpected number of aarch64 vector regs.");
 
 #define EXTRACT_FIELD(v, name) \
index 84f382b9cef240852e95dd61260283c9a5281bd0..1c9ec262acf7a381df273721c1638b33dc3aec24 100644 (file)
@@ -82,7 +82,6 @@ using VecPredRegContainer = VecPredReg::Container;
 const int NumIntArchRegs = NUM_ARCH_INTREGS;
 // The number of single precision floating point registers
 const int NumFloatV7ArchRegs  = 64;
-const int NumFloatV8ArchRegs  = 128;
 const int NumVecV7ArchRegs  = 64;
 const int NumVecV8ArchRegs  = 32;
 const int NumVecSpecialRegs = 8;