summary refs log tree commit diff stats
path: root/target/hexagon/gen_op_regs.py
diff options
context:
space:
mode:
Diffstat (limited to 'target/hexagon/gen_op_regs.py')
-rwxr-xr-xtarget/hexagon/gen_op_regs.py77
1 files changed, 45 insertions, 32 deletions
diff --git a/target/hexagon/gen_op_regs.py b/target/hexagon/gen_op_regs.py
index c0de9ad380..42972c7f9e 100755
--- a/target/hexagon/gen_op_regs.py
+++ b/target/hexagon/gen_op_regs.py
@@ -22,21 +22,25 @@ import re
 import string
 import hex_common
 
+
 ##
 ##     Generate the register and immediate operands for each instruction
 ##
 def calculate_regid_reg(tag):
-    def letter_inc(x): return chr(ord(x)+1)
-    ordered_implregs = [ 'SP','FP','LR' ]
-    srcdst_lett = 'X'
-    src_lett = 'S'
-    dst_lett = 'D'
+    def letter_inc(x):
+        return chr(ord(x) + 1)
+
+    ordered_implregs = ["SP", "FP", "LR"]
+    srcdst_lett = "X"
+    src_lett = "S"
+    dst_lett = "D"
     retstr = ""
     mapdict = {}
     for reg in ordered_implregs:
         reg_rd = 0
         reg_wr = 0
-        if ('A_IMPLICIT_WRITES_'+reg) in hex_common.attribdict[tag]: reg_wr = 1
+        if ("A_IMPLICIT_WRITES_" + reg) in hex_common.attribdict[tag]:
+            reg_wr = 1
         if reg_rd and reg_wr:
             retstr += srcdst_lett
             mapdict[srcdst_lett] = reg
@@ -49,16 +53,19 @@ def calculate_regid_reg(tag):
             retstr += dst_lett
             mapdict[dst_lett] = reg
             dst_lett = letter_inc(dst_lett)
-    return retstr,mapdict
+    return retstr, mapdict
+
 
 def calculate_regid_letters(tag):
-    retstr,mapdict = calculate_regid_reg(tag)
+    retstr, mapdict = calculate_regid_reg(tag)
     return retstr
 
+
 def strip_reg_prefix(x):
-    y=x.replace('UREG.','')
-    y=y.replace('MREG.','')
-    return y.replace('GREG.','')
+    y = x.replace("UREG.", "")
+    y = y.replace("MREG.", "")
+    return y.replace("GREG.", "")
+
 
 def main():
     hex_common.read_semantics_file(sys.argv[1])
@@ -66,45 +73,51 @@ def main():
     tagregs = hex_common.get_tagregs()
     tagimms = hex_common.get_tagimms()
 
-    with open(sys.argv[3], 'w') as f:
+    with open(sys.argv[3], "w") as f:
         for tag in hex_common.tags:
             regs = tagregs[tag]
             rregs = []
             wregs = []
             regids = ""
-            for regtype,regid,toss,numregs in regs:
+            for regtype, regid, toss, numregs in regs:
                 if hex_common.is_read(regid):
-                    if regid[0] not in regids: regids += regid[0]
-                    rregs.append(regtype+regid+numregs)
+                    if regid[0] not in regids:
+                        regids += regid[0]
+                    rregs.append(regtype + regid + numregs)
                 if hex_common.is_written(regid):
-                    wregs.append(regtype+regid+numregs)
-                    if regid[0] not in regids: regids += regid[0]
+                    wregs.append(regtype + regid + numregs)
+                    if regid[0] not in regids:
+                        regids += regid[0]
             for attrib in hex_common.attribdict[tag]:
-                if hex_common.attribinfo[attrib]['rreg']:
-                    rregs.append(strip_reg_prefix(attribinfo[attrib]['rreg']))
-                if hex_common.attribinfo[attrib]['wreg']:
-                    wregs.append(strip_reg_prefix(attribinfo[attrib]['wreg']))
+                if hex_common.attribinfo[attrib]["rreg"]:
+                    rregs.append(strip_reg_prefix(attribinfo[attrib]["rreg"]))
+                if hex_common.attribinfo[attrib]["wreg"]:
+                    wregs.append(strip_reg_prefix(attribinfo[attrib]["wreg"]))
             regids += calculate_regid_letters(tag)
-            f.write(f'REGINFO({tag},"{regids}",\t/*RD:*/\t"{",".join(rregs)}",'
-                    f'\t/*WR:*/\t"{",".join(wregs)}")\n')
+            f.write(
+                f'REGINFO({tag},"{regids}",\t/*RD:*/\t"{",".join(rregs)}",'
+                f'\t/*WR:*/\t"{",".join(wregs)}")\n'
+            )
 
         for tag in hex_common.tags:
             imms = tagimms[tag]
-            f.write(f'IMMINFO({tag}')
+            f.write(f"IMMINFO({tag}")
             if not imms:
-                f.write(''','u',0,0,'U',0,0''')
-            for sign,size,shamt in imms:
-                if sign == 'r': sign = 's'
+                f.write(""",'u',0,0,'U',0,0""")
+            for sign, size, shamt in imms:
+                if sign == "r":
+                    sign = "s"
                 if not shamt:
                     shamt = "0"
-                f.write(f''','{sign}',{size},{shamt}''')
+                f.write(f""",'{sign}',{size},{shamt}""")
             if len(imms) == 1:
                 if sign.isupper():
-                    myu = 'u'
+                    myu = "u"
                 else:
-                    myu = 'U'
-                f.write(f''','{myu}',0,0''')
-            f.write(')\n')
+                    myu = "U"
+                f.write(f""",'{myu}',0,0""")
+            f.write(")\n")
+
 
 if __name__ == "__main__":
     main()