changeset bdd926760470 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=bdd926760470
description:
        X86: Get rid of the flagless microop constructor.

        This will reduce clutter in the source and hopefully speed up 
compilation.

diffstat:

 src/arch/x86/isa/formats/string.isa   |   3 +-
 src/arch/x86/isa/microops/debug.isa   |  32 +--------------------
 src/arch/x86/isa/microops/fpop.isa    |  27 +----------------
 src/arch/x86/isa/microops/ldstop.isa  |  45 +----------------------------
 src/arch/x86/isa/microops/limmop.isa  |  24 +--------------
 src/arch/x86/isa/microops/mediaop.isa |  54 +---------------------------------
 src/arch/x86/isa/microops/regop.isa   |  54 +---------------------------------
 src/arch/x86/isa/microops/seqop.isa   |  29 +------------------
 src/arch/x86/isa/microops/specop.isa  |  37 +-----------------------
 9 files changed, 13 insertions(+), 292 deletions(-)

diffs (truncated from 645 to 300 lines):

diff -r b1e69203bae9 -r bdd926760470 src/arch/x86/isa/formats/string.isa
--- a/src/arch/x86/isa/formats/string.isa       Mon Aug 23 09:44:19 2010 -0700
+++ b/src/arch/x86/isa/formats/string.isa       Mon Aug 23 09:44:19 2010 -0700
@@ -85,7 +85,8 @@
             %s
         } else if (LEGACY_REPNE) {
             // The repne prefix is illegal
-            return new MicroFault(machInst, "illprefix", new InvalidOpcode, 0);
+            return new MicroFault(machInst, "illprefix", 0,
+                                  new InvalidOpcode, 0);
         } else {
             %s
         }
diff -r b1e69203bae9 -r bdd926760470 src/arch/x86/isa/microops/debug.isa
--- a/src/arch/x86/isa/microops/debug.isa       Mon Aug 23 09:44:19 2010 -0700
+++ b/src/arch/x86/isa/microops/debug.isa       Mon Aug 23 09:44:19 2010 -0700
@@ -53,9 +53,6 @@
                 const char * instMnem, uint64_t setFlags,
                 std::string _message, uint8_t _cc);
 
-        MicroDebugBase(ExtMachInst _machInst, const char * mnem,
-                const char * instMnem, std::string _message, uint8_t _cc);
-
         std::string generateDisassembly(Addr pc,
                 const SymbolTable *symtab) const;
     };
@@ -64,15 +61,10 @@
 def template MicroDebugDeclare {{
     class %(class_name)s : public %(base_class)s
     {
-      private:
-        void buildMe();
       public:
         %(class_name)s(ExtMachInst _machInst, const char * instMnem,
                 uint64_t setFlags, std::string _message, uint8_t _cc);
 
-        %(class_name)s(ExtMachInst _machInst, const char * instMnem,
-                std::string _message, uint8_t _cc);
-
         %(BasicExecDeclare)s
     };
 }};
@@ -93,14 +85,6 @@
 output decoder {{
     inline MicroDebugBase::MicroDebugBase(
             ExtMachInst machInst, const char * mnem, const char * instMnem,
-            std::string _message, uint8_t _cc) :
-        X86MicroopBase(machInst, mnem, instMnem, 0, No_OpClass),
-        message(_message), cc(_cc)
-    {
-    }
-
-    inline MicroDebugBase::MicroDebugBase(
-            ExtMachInst machInst, const char * mnem, const char * instMnem,
             uint64_t setFlags, std::string _message, uint8_t _cc) :
         X86MicroopBase(machInst, mnem, instMnem,
                 setFlags, No_OpClass),
@@ -110,27 +94,13 @@
 }};
 
 def template MicroDebugConstructor {{
-
-    inline void %(class_name)s::buildMe()
-    {
-        %(constructor)s;
-    }
-
-    inline %(class_name)s::%(class_name)s(
-            ExtMachInst machInst, const char * instMnem,
-            std::string _message, uint8_t _cc) :
-        %(base_class)s(machInst, "%(func)s", instMnem, _message, _cc)
-    {
-        buildMe();
-    }
-
     inline %(class_name)s::%(class_name)s(
             ExtMachInst machInst, const char * instMnem, uint64_t setFlags,
             std::string _message, uint8_t _cc) :
         %(base_class)s(machInst, "%(func)s", instMnem,
                 setFlags, _message, _cc)
     {
-        buildMe();
+        %(constructor)s;
     }
 }};
 
diff -r b1e69203bae9 -r bdd926760470 src/arch/x86/isa/microops/fpop.isa
--- a/src/arch/x86/isa/microops/fpop.isa        Mon Aug 23 09:44:19 2010 -0700
+++ b/src/arch/x86/isa/microops/fpop.isa        Mon Aug 23 09:44:19 2010 -0700
@@ -74,42 +74,17 @@
 def template MicroFpOpDeclare {{
     class %(class_name)s : public %(base_class)s
     {
-      protected:
-        void buildMe();
-
       public:
         %(class_name)s(ExtMachInst _machInst,
                 const char * instMnem, uint64_t setFlags,
                 InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
                 uint8_t _dataSize, int8_t _spm);
 
-        %(class_name)s(ExtMachInst _machInst,
-                const char * instMnem,
-                InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
-                uint8_t _dataSize, int8_t _spm);
-
         %(BasicExecDeclare)s
     };
 }};
 
 def template MicroFpOpConstructor {{
-
-    inline void %(class_name)s::buildMe()
-    {
-        %(constructor)s;
-    }
-
-    inline %(class_name)s::%(class_name)s(
-            ExtMachInst machInst, const char * instMnem,
-            InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
-            uint8_t _dataSize, int8_t _spm) :
-        %(base_class)s(machInst, "%(mnemonic)s", instMnem, 0,
-                _src1, _src2, _dest, _dataSize, _spm,
-                %(op_class)s)
-    {
-        buildMe();
-    }
-
     inline %(class_name)s::%(class_name)s(
             ExtMachInst machInst, const char * instMnem, uint64_t setFlags,
             InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
@@ -118,7 +93,7 @@
                 _src1, _src2, _dest, _dataSize, _spm,
                 %(op_class)s)
     {
-        buildMe();
+        %(constructor)s;
     }
 }};
 
diff -r b1e69203bae9 -r bdd926760470 src/arch/x86/isa/microops/ldstop.isa
--- a/src/arch/x86/isa/microops/ldstop.isa      Mon Aug 23 09:44:19 2010 -0700
+++ b/src/arch/x86/isa/microops/ldstop.isa      Mon Aug 23 09:44:19 2010 -0700
@@ -71,9 +71,6 @@
 def template MicroLeaDeclare {{
     class %(class_name)s : public %(base_class)s
     {
-      protected:
-        void buildMe();
-
       public:
         %(class_name)s(ExtMachInst _machInst,
                 const char * instMnem, uint64_t setFlags,
@@ -83,14 +80,6 @@
                 uint8_t _dataSize, uint8_t _addressSize,
                 Request::FlagsType _memFlags);
 
-        %(class_name)s(ExtMachInst _machInst,
-                const char * instMnem,
-                uint8_t _scale, InstRegIndex _index, InstRegIndex _base,
-                uint64_t _disp, InstRegIndex _segment,
-                InstRegIndex _data,
-                uint8_t _dataSize, uint8_t _addressSize,
-                Request::FlagsType _memFlags);
-
         %(BasicExecDeclare)s
     };
 }};
@@ -246,9 +235,6 @@
 def template MicroLdStOpDeclare {{
     class %(class_name)s : public %(base_class)s
     {
-      protected:
-        void buildMe();
-
       public:
         %(class_name)s(ExtMachInst _machInst,
                 const char * instMnem, uint64_t setFlags,
@@ -258,14 +244,6 @@
                 uint8_t _dataSize, uint8_t _addressSize,
                 Request::FlagsType _memFlags);
 
-        %(class_name)s(ExtMachInst _machInst,
-                const char * instMnem,
-                uint8_t _scale, InstRegIndex _index, InstRegIndex _base,
-                uint64_t _disp, InstRegIndex _segment,
-                InstRegIndex _data,
-                uint8_t _dataSize, uint8_t _addressSize,
-                Request::FlagsType _memFlags);
-
         %(BasicExecDeclare)s
 
         %(InitiateAccDeclare)s
@@ -275,27 +253,6 @@
 }};
 
 def template MicroLdStOpConstructor {{
-
-    inline void %(class_name)s::buildMe()
-    {
-        %(constructor)s;
-    }
-
-    inline %(class_name)s::%(class_name)s(
-            ExtMachInst machInst, const char * instMnem,
-            uint8_t _scale, InstRegIndex _index, InstRegIndex _base,
-            uint64_t _disp, InstRegIndex _segment,
-            InstRegIndex _data,
-            uint8_t _dataSize, uint8_t _addressSize,
-            Request::FlagsType _memFlags) :
-        %(base_class)s(machInst, "%(mnemonic)s", instMnem, 0,
-                _scale, _index, _base,
-                _disp, _segment, _data,
-                _dataSize, _addressSize, _memFlags, %(op_class)s)
-    {
-        buildMe();
-    }
-
     inline %(class_name)s::%(class_name)s(
             ExtMachInst machInst, const char * instMnem, uint64_t setFlags,
             uint8_t _scale, InstRegIndex _index, InstRegIndex _base,
@@ -308,7 +265,7 @@
                 _disp, _segment, _data,
                 _dataSize, _addressSize, _memFlags, %(op_class)s)
     {
-        buildMe();
+        %(constructor)s;
     }
 }};
 
diff -r b1e69203bae9 -r bdd926760470 src/arch/x86/isa/microops/limmop.isa
--- a/src/arch/x86/isa/microops/limmop.isa      Mon Aug 23 09:44:19 2010 -0700
+++ b/src/arch/x86/isa/microops/limmop.isa      Mon Aug 23 09:44:19 2010 -0700
@@ -61,7 +61,6 @@
         const uint64_t imm;
         const uint8_t dataSize;
         RegIndex foldOBit;
-        void buildMe();
 
         std::string generateDisassembly(Addr pc,
             const SymbolTable *symtab) const;
@@ -72,10 +71,6 @@
                 uint64_t setFlags, InstRegIndex _dest,
                 uint64_t _imm, uint8_t _dataSize);
 
-        %(class_name)s(ExtMachInst _machInst,
-                const char * instMnem,
-                InstRegIndex _dest, uint64_t _imm, uint8_t _dataSize);
-
         %(BasicExecDeclare)s
     };
 }};
@@ -95,22 +90,6 @@
 }};
 
 def template MicroLimmOpConstructor {{
-
-    inline void %(class_name)s::buildMe()
-    {
-        foldOBit = (dataSize == 1 && !machInst.rex.present) ? 1 << 6 : 0;
-        %(constructor)s;
-    }
-
-    inline %(class_name)s::%(class_name)s(
-            ExtMachInst machInst, const char * instMnem,
-            InstRegIndex _dest, uint64_t _imm, uint8_t _dataSize) :
-        %(base_class)s(machInst, "%(mnemonic)s", instMnem, 0, %(op_class)s),
-                dest(_dest.idx), imm(_imm), dataSize(_dataSize)
-    {
-        buildMe();
-    }
-
     inline %(class_name)s::%(class_name)s(
             ExtMachInst machInst, const char * instMnem, uint64_t setFlags,
             InstRegIndex _dest, uint64_t _imm, uint8_t _dataSize) :
@@ -118,7 +97,8 @@
                 setFlags, %(op_class)s),
                 dest(_dest.idx), imm(_imm), dataSize(_dataSize)
     {
-        buildMe();
+        foldOBit = (dataSize == 1 && !machInst.rex.present) ? 1 << 6 : 0;
+        %(constructor)s;
     }
 }};
 
diff -r b1e69203bae9 -r bdd926760470 src/arch/x86/isa/microops/mediaop.isa
--- a/src/arch/x86/isa/microops/mediaop.isa     Mon Aug 23 09:44:19 2010 -0700
+++ b/src/arch/x86/isa/microops/mediaop.isa     Mon Aug 23 09:44:19 2010 -0700
@@ -49,20 +49,12 @@
 def template MediaOpRegDeclare {{
     class %(class_name)s : public %(base_class)s
     {
-      protected:
-        void buildMe();
-
       public:
         %(class_name)s(ExtMachInst _machInst,
                 const char * instMnem, uint64_t setFlags,
                 InstRegIndex _src1, InstRegIndex _src2, InstRegIndex _dest,
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to