ISA parser: Define operand types with a ctype directly.
authorGabe Black <gblack@eecs.umich.edu>
Tue, 5 Jul 2011 23:52:15 +0000 (16:52 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Tue, 5 Jul 2011 23:52:15 +0000 (16:52 -0700)
src/arch/alpha/isa/main.isa
src/arch/arm/isa/operands.isa
src/arch/isa_parser.py
src/arch/mips/isa/operands.isa
src/arch/power/isa/operands.isa
src/arch/sparc/isa/operands.isa
src/arch/x86/isa/operands.isa

index c03a999707c741d57e20ba48915027cbcc0c413e..3d80ddf68debf4d989289eb2ce27965bb119e935 100644 (file)
@@ -161,16 +161,16 @@ def bitfield HW_IPR_IDX <15:0>;  // IPR index
 def bitfield M5FUNC <7:0>;
 
 def operand_types {{
-    'sb' : ('signed int', 8),
-    'ub' : ('unsigned int', 8),
-    'sw' : ('signed int', 16),
-    'uw' : ('unsigned int', 16),
-    'sl' : ('signed int', 32),
-    'ul' : ('unsigned int', 32),
-    'sq' : ('signed int', 64),
-    'uq' : ('unsigned int', 64),
-    'sf' : ('float', 32),
-    'df' : ('float', 64)
+    'sb' : 'int8_t',
+    'ub' : 'uint8_t',
+    'sw' : 'int16_t',
+    'uw' : 'uint16_t',
+    'sl' : 'int32_t',
+    'ul' : 'uint32_t',
+    'sq' : 'int64_t',
+    'uq' : 'uint64_t',
+    'sf' : 'float',
+    'df' : 'double'
 }};
 
 def operands {{
index a07ee8088f26ae917aa5bcd23164ebf1d1231029..62684f5af058616306589406d12a26adda7dd28b 100644 (file)
 // Authors: Stephen Hines
 
 def operand_types {{
-    'sb' : ('signed int', 8),
-    'ub' : ('unsigned int', 8),
-    'sh' : ('signed int', 16),
-    'uh' : ('unsigned int', 16),
-    'sw' : ('signed int', 32),
-    'uw' : ('unsigned int', 32),
-    'ud' : ('unsigned int', 64),
-    'tud' : ('twin64 int', 64),
-    'sf' : ('float', 32),
-    'df' : ('float', 64)
+    'sb' : 'int8_t',
+    'ub' : 'uint8_t',
+    'sh' : 'int16_t',
+    'uh' : 'uint16_t',
+    'sw' : 'int32_t',
+    'uw' : 'uint32_t',
+    'ud' : 'uint64_t',
+    'tud' : 'Twin64_t',
+    'sf' : 'float',
+    'df' : 'double'
 }};
 
 let {{
index f52727a75207af26022189c0e15bd0c48ee8bc4d..97b1bcecca5f0faded635504926ec2c16e4260f7 100755 (executable)
@@ -1321,13 +1321,12 @@ StaticInstPtr
     def p_def_operand_types(self, t):
         'def_operand_types : DEF OPERAND_TYPES CODELIT SEMI'
         try:
-            user_dict = eval('{' + t[3] + '}')
+            self.operandTypeMap = eval('{' + t[3] + '}')
         except Exception, exc:
             if debug:
                 raise
             error(t,
                   'error: %s in def operand_types block "%s".' % (exc, t[3]))
-        self.buildOperandTypeMap(user_dict, t.lexer.lineno)
         t[0] = GenCode(self) # contributes nothing to the output C++ file
 
     # Define the mapping from operand names to operand classes and
@@ -1788,31 +1787,6 @@ StaticInstPtr
 
         return re.sub(r'%(?!\()', '%%', s)
 
-    def buildOperandTypeMap(self, user_dict, lineno):
-        """Generate operandTypeMap from the user's 'def operand_types'
-        statement."""
-        operand_type = {}
-        for (ext, (desc, size)) in user_dict.iteritems():
-            if desc == 'signed int':
-                ctype = 'int%d_t' % size
-            elif desc == 'unsigned int':
-                ctype = 'uint%d_t' % size
-            elif desc == 'float':
-                if size == 32:
-                    ctype = 'float'
-                elif size == 64:
-                    ctype = 'double'
-            elif desc == 'twin64 int':
-                ctype = 'Twin64_t'
-            elif desc == 'twin32 int':
-                ctype = 'Twin32_t'
-            if ctype == '':
-                error(parser, lineno,
-                      'Unrecognized type description "%s" in user_dict')
-            operand_type[ext] = ctype
-
-        self.operandTypeMap = operand_type
-
     def buildOperandNameMap(self, user_dict, lineno):
         operand_name = {}
         for op_name, val in user_dict.iteritems():
index 792c7e2fae2a05629aaf638eb09eb20f7befea34..2d44bb30ee4cc6e93775d53c32db81537808cf43 100644 (file)
 //          Jaidev Patwardhan
 
 def operand_types {{
-    'sb' : ('signed int', 8),
-    'ub' : ('unsigned int', 8),
-    'sh' : ('signed int', 16),
-    'uh' : ('unsigned int', 16),
-    'sw' : ('signed int', 32),
-    'uw' : ('unsigned int', 32),
-    'sd' : ('signed int', 64),
-    'ud' : ('unsigned int', 64),
-    'sf' : ('float', 32),
-    'df' : ('float', 64),
+    'sb' : 'int8_t',
+    'ub' : 'uint8_t',
+    'sh' : 'int16_t',
+    'uh' : 'uint16_t',
+    'sw' : 'int32_t',
+    'uw' : 'uint32_t',
+    'sd' : 'int64_t',
+    'ud' : 'uint64_t',
+    'sf' : 'float',
+    'df' : 'double'
 }};
 
 def operands {{
index 8e13a13d71438c5ad478a6b8ad2a6bdff3dc04d7..fa481825fe7fe213f0f7a95d00207b003b05446b 100644 (file)
 // Authors: Timothy M. Jones
 
 def operand_types {{
-    'sb' : ('signed int', 8),
-    'ub' : ('unsigned int', 8),
-    'sh' : ('signed int', 16),
-    'uh' : ('unsigned int', 16),
-    'sw' : ('signed int', 32),
-    'uw' : ('unsigned int', 32),
-    'sq' : ('signed int', 64),
-    'uq' : ('unsigned int', 64),
-    'sf' : ('float', 32),
-    'df' : ('float', 64)
+    'sb' : 'int8_t',
+    'ub' : 'uint8_t',
+    'sh' : 'int16_t',
+    'uh' : 'uint16_t',
+    'sw' : 'int32_t',
+    'uw' : 'uint32_t',
+    'sq' : 'int64_t',
+    'uq' : 'uint64_t',
+    'sf' : 'float',
+    'df' : 'double'
 }};
 
 def operands {{
index 047451ae7bb8568c2729a5401297bf91d4317ec7..425f6c317266ef6fdc18bd68405a8bf981dddff9 100644 (file)
 //          Steve Reinhardt
 
 def operand_types {{
-    'sb' : ('signed int', 8),
-    'ub' : ('unsigned int', 8),
-    'shw' : ('signed int', 16),
-    'uhw' : ('unsigned int', 16),
-    'sw' : ('signed int', 32),
-    'uw' : ('unsigned int', 32),
-    'sdw' : ('signed int', 64),
-    'udw' : ('unsigned int', 64),
-    'tudw' : ('twin64 int', 64),
-    'tuw' : ('twin32 int', 32),
-    'sf' : ('float', 32),
-    'df' : ('float', 64),
-    'qf' : ('float', 128)
+    'sb' : 'int8_t',
+    'ub' : 'uint8_t',
+    'shw' : 'int16_t',
+    'uhw' : 'uint16_t',
+    'sw' : 'int32_t',
+    'uw' : 'uint32_t',
+    'sdw' : 'int64_t',
+    'udw' : 'uint64_t',
+    'tudw' : 'Twin64_t',
+    'tuw' : 'Twin32_t',
+    'sf' : 'float',
+    'df' : 'double'
 }};
 
 output header {{
index 51b9b73a68a0700ceedfab7a079acf71884f209e..aedfedc0c9f4b7162985a6e6a2bfa374b0e1757b 100644 (file)
 // Authors: Gabe Black
 
 def operand_types {{
-    'sb' : ('signed int', 8),
-    'ub' : ('unsigned int', 8),
-    'sw' : ('signed int', 16),
-    'uw' : ('unsigned int', 16),
-    'sdw' : ('signed int', 32),
-    'udw' : ('unsigned int', 32),
-    'sqw' : ('signed int', 64),
-    'uqw' : ('unsigned int', 64),
-    'sf' : ('float', 32),
-    'df' : ('float', 64),
+    'sb' : 'int8_t',
+    'ub' : 'uint8_t',
+    'sw' : 'int16_t',
+    'uw' : 'uint16_t',
+    'sdw' : 'int32_t',
+    'udw' : 'uint32_t',
+    'sqw' : 'int64_t',
+    'uqw' : 'uint64_t',
+    'sf' : 'float',
+    'df' : 'double',
 }};
 
 let {{