arch-arm: Fixed SVE stores of predicate registers

Fixed the size of the byteEnable vector for the stores of predicate registers

Change-Id: I4e8182b268c6ae3d1d389580894a450358451d77
Signed-off-by: Pau Cabre <pau.cabre@metempsy.com>
diff --git a/src/arch/arm/isa/insts/sve_mem.isa b/src/arch/arm/isa/insts/sve_mem.isa
index a767a9d..4a332aa 100644
--- a/src/arch/arm/isa/insts/sve_mem.isa
+++ b/src/arch/arm/isa/insts/sve_mem.isa
@@ -244,6 +244,9 @@
                 memDataView[i] = byte;
             }
             '''
+            storeWrEnableCode = '''
+            auto wrEn = std::vector<bool>(eCount / 8, true);
+            '''
         else:
             loadMemAccCode = '''
             for (int i = 0; i < eCount; i++) {
@@ -255,6 +258,9 @@
                 memDataView[i] = AA64FpDest_x[i];
             }
             '''
+            storeWrEnableCode = '''
+            auto wrEn = std::vector<bool>(sizeof(MemElemType) * eCount, true);
+            '''
         loadIop = InstObjParams('ldr',
             'SveLdrPred' if isPred else 'SveLdrVec',
             'SveMemPredFillSpill' if isPred else 'SveMemVecFillSpill',
@@ -269,6 +275,7 @@
             'SveMemPredFillSpill' if isPred else 'SveMemVecFillSpill',
             {'tpl_header': '',
              'tpl_args': '',
+             'wren_code': storeWrEnableCode,
              'memacc_code': storeMemAccCode,
              'ea_code' : sveEnabledCheckCode + eaCode,
              'fa_code' : ''},
@@ -348,6 +355,9 @@
             }
         }
         '''
+        storeWrEnableCode = '''
+        auto wrEn = std::vector<bool>(sizeof(MemElemType) * eCount, true);
+        '''
         loadIop = InstObjParams('ld1',
             'SveContigLoadSI' if offsetIsImm else 'SveContigLoadSS',
             'SveContigMemSI' if offsetIsImm else 'SveContigMemSS',
@@ -362,6 +372,7 @@
             'SveContigMemSI' if offsetIsImm else 'SveContigMemSS',
             {'tpl_header': tplHeader,
              'tpl_args': tplArgs,
+             'wren_code': storeWrEnableCode,
              'memacc_code': storeMemAccCode,
              'ea_code' : sveEnabledCheckCode + eaCode,
              'fa_code' : ''},
diff --git a/src/arch/arm/isa/templates/sve_mem.isa b/src/arch/arm/isa/templates/sve_mem.isa
index def26cf..2fbab70 100644
--- a/src/arch/arm/isa/templates/sve_mem.isa
+++ b/src/arch/arm/isa/templates/sve_mem.isa
@@ -239,7 +239,7 @@
         TheISA::VecRegContainer memData;
         auto memDataView = memData.as<MemElemType>();
 
-        auto wrEn = std::vector<bool>(sizeof(MemElemType) * eCount, true);
+        %(wren_code)s;
 
         if (fault == NoFault) {
             %(memacc_code)s;
@@ -276,7 +276,7 @@
         TheISA::VecRegContainer memData;
         auto memDataView = memData.as<MemElemType>();
 
-        auto wrEn = std::vector<bool>(sizeof(MemElemType) * eCount, true);
+        %(wren_code)s;
 
         if (fault == NoFault) {
             %(memacc_code)s;