power: Convert POWER to use local reg index storage.
authorGabe Black <gabe.black@gmail.com>
Mon, 2 Nov 2020 01:25:17 +0000 (17:25 -0800)
committerGabe Black <gabe.black@gmail.com>
Sat, 28 Nov 2020 02:05:38 +0000 (02:05 +0000)
Change-Id: Ieea4ade247f89b23266a383b604c17e740d44e3d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36882
Reviewed-by: Sandipan Das <sandipan@linux.ibm.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/power/isa/formats/basic.isa
src/arch/power/isa/formats/integer.isa
src/arch/power/isa/formats/mem.isa

index 0ccef6aba6870bf4c092c2a2cf769fc57e1a002b..20d380f09641df82d2fce0c8049a29ce4052777a 100644 (file)
@@ -33,19 +33,23 @@ def template BasicDeclare {{
          */
         class %(class_name)s : public %(base_class)s
         {
+          private:
+            %(reg_idx_arr_decl)s;
+
           public:
-                /// Constructor.
-                %(class_name)s(ExtMachInst machInst);
-                Fault execute(ExecContext *,
-                              Trace::InstRecord *) const override;
+            /// Constructor.
+            %(class_name)s(ExtMachInst machInst);
+            Fault execute(ExecContext *, Trace::InstRecord *) const override;
         };
 }};
 
 // Basic instruction class constructor template.
 def template BasicConstructor {{
-        %(class_name)s::%(class_name)s(ExtMachInst machInst)  : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
+        %(class_name)s::%(class_name)s(ExtMachInst machInst) :
+            %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
         {
-                %(constructor)s;
+            %(set_reg_idx_arr)s;
+            %(constructor)s;
         }
 }};
 
index 3b24927ad37e5aad1ee127bb924f51ce6937268f..50badce53142d059ae63492d4704767ae180054a 100644 (file)
 
 // Instruction class constructor template when Rc is set.
 def template IntRcConstructor {{
-        %(class_name)s::%(class_name)s(ExtMachInst machInst)  : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
-        {
-                %(constructor)s;
-                rcSet = true;
-        }
+    %(class_name)s::%(class_name)s(ExtMachInst machInst) :
+        %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
+    {
+        %(set_reg_idx_arr)s;
+        %(constructor)s;
+        rcSet = true;
+    }
 }};
 
 
 // Instruction class constructor template when OE is set.
 def template IntOeConstructor {{
-        %(class_name)s::%(class_name)s(ExtMachInst machInst)  : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
-        {
-                %(constructor)s;
-                oeSet = true;
-        }
+    %(class_name)s::%(class_name)s(ExtMachInst machInst) :
+        %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
+    {
+        %(set_reg_idx_arr)s;
+        %(constructor)s;
+        oeSet = true;
+    }
 }};
 
 
 // Instruction class constructor template when both Rc and OE are set.
 def template IntRcOeConstructor {{
-        %(class_name)s::%(class_name)s(ExtMachInst machInst)  : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
-        {
-                %(constructor)s;
-                rcSet = true;
-                oeSet = true;
-        }
+    %(class_name)s::%(class_name)s(ExtMachInst machInst) :
+        %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
+    {
+        %(set_reg_idx_arr)s;
+        %(constructor)s;
+        rcSet = true;
+        oeSet = true;
+    }
 }};
 
 
index 1f10a5a1889a8ddd4cf1655288e073306605bb9a..c7be2b10d9371d73599468f0aac96a1bde59f0b3 100644 (file)
@@ -37,8 +37,10 @@ def template LoadStoreDeclare {{
      */
     class %(class_name)s : public %(base_class)s
     {
-      public:
+      private:
+        %(reg_idx_arr_decl)s;
 
+      public:
         /// Constructor.
         %(class_name)s(ExtMachInst machInst);
 
@@ -54,6 +56,7 @@ def template LoadStoreConstructor {{
     %(class_name)s::%(class_name)s(ExtMachInst machInst)
          : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s)
     {
+        %(set_reg_idx_arr)s;
         %(constructor)s;
     }
 }};