add another bad hack in parser.py which identifies "undefined" slice assignment
[soc.git] / src / soc / decoder / pseudo / pywriter.py
index 3cb6bef1a10efaa1ffdacb48081e3b30586d6001..bac8c4592b8709ffea6928dc19f4d8d33cb29e65 100644 (file)
@@ -19,7 +19,9 @@ header = """\
 # auto-generated by pywriter.py, do not edit or commit
 
 from soc.decoder.isa.caller import inject, instruction_info
-from soc.decoder.helpers import (EXTS, EXTS64, EXTZ64, ROTL64, ROTL32, MASK,)
+from soc.decoder.helpers import (EXTS, EXTS64, EXTZ64, ROTL64, ROTL32, MASK,
+                                 ne, eq, gt, ge, lt, le, length,
+                                 trunc_div, trunc_rem)
 from soc.decoder.selectable_int import SelectableInt
 from soc.decoder.selectable_int import selectconcat as concat
 from soc.decoder.orderedset import OrderedSet
@@ -51,10 +53,11 @@ class PyISAWriter(ISA):
             # go through all instructions
             for page in instrs:
                 d = self.instr[page]
-                print (fname, d.opcode)
+                print ("page", pagename, page, fname, d.opcode)
                 pcode = '\n'.join(d.pcode) + '\n'
                 print (pcode)
-                pycode, rused = convert_to_python(pcode, d.form)
+                incl_carry = pagename == 'fixedshift'
+                pycode, rused = convert_to_python(pcode, d.form, incl_carry)
                 # create list of arguments to call
                 regs = list(rused['read_regs']) + list(rused['uninit_regs'])
                 regs += list(rused['special_regs'])
@@ -115,8 +118,8 @@ class PyISAWriter(ISA):
 
             classes = ', '.join(['ISACaller'] + self.pages_written)
             f.write('class ISA(%s):\n' % classes)
-            f.write('    def __init__(self, dec, regs):\n')
-            f.write('        super().__init__(dec, regs)\n')
+            f.write('    def __init__(self, *args, **kwargs):\n')
+            f.write('        super().__init__(*args, **kwargs)\n')
             f.write('        self.instrs = {\n')
             for page in self.pages_written:
                 f.write('            **self.%s_instrs,\n' % page)