projects
/
soc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
investigating CR mtocrf / mfocrf
[soc.git]
/
src
/
soc
/
decoder
/
power_pseudo.py
diff --git
a/src/soc/decoder/power_pseudo.py
b/src/soc/decoder/power_pseudo.py
index 67ae8bc83fef15a3f198d06afd3f442ae41083bc..3e02cb78a37c313d42800a58eb410d57655d63b0 100644
(file)
--- a/
src/soc/decoder/power_pseudo.py
+++ b/
src/soc/decoder/power_pseudo.py
@@
-211,10
+211,11
@@
def tolist(num):
def get_reg_hex(reg):
return hex(reg.value)
def get_reg_hex(reg):
return hex(reg.value)
-def convert_to_python(pcode, form):
- print ("form", form)
- gsc = GardenSnakeCompiler(form=form)
+def convert_to_python(pcode, form, incl_carry):
+
+ print("form", form)
+ gsc = GardenSnakeCompiler(form=form, incl_carry=incl_carry)
tree = gsc.compile(pcode, mode="exec", filename="string")
tree = ast.fix_missing_locations(tree)
tree = gsc.compile(pcode, mode="exec", filename="string")
tree = ast.fix_missing_locations(tree)
@@
-222,7
+223,7
@@
def convert_to_python(pcode, form):
'write_regs': gsc.parser.write_regs,
'uninit_regs': gsc.parser.uninit_regs,
'special_regs': gsc.parser.special_regs,
'write_regs': gsc.parser.write_regs,
'uninit_regs': gsc.parser.uninit_regs,
'special_regs': gsc.parser.special_regs,
- 'op_fields': gsc.parser.op_fields
}
+ 'op_fields': gsc.parser.op_fields}
return astor.to_source(tree), regsused
return astor.to_source(tree), regsused
@@
-255,12
+256,15
@@
def test():
print("args", args)
print("-->", " ".join(map(str, args)))
print("args", args)
print("-->", " ".join(map(str, args)))
- from soc.decoder.helpers import (EXTS64, EXTZ64, ROTL64, ROTL32, MASK,)
+ from soc.decoder.helpers import (EXTS64, EXTZ64, ROTL64, ROTL32, MASK,
+ trunc_div, trunc_rem)
d = {}
d["print"] = print_
d["EXTS64"] = EXTS64
d["EXTZ64"] = EXTZ64
d = {}
d["print"] = print_
d["EXTS64"] = EXTS64
d["EXTZ64"] = EXTZ64
+ d["trunc_div"] = trunc_div
+ d["trunc_rem"] = trunc_rem
d["SelectableInt"] = SelectableInt
d["concat"] = selectconcat
d["GPR"] = gsc.gpr
d["SelectableInt"] = SelectableInt
d["concat"] = selectconcat
d["GPR"] = gsc.gpr
@@
-304,8
+308,8
@@
def test():
# read regs, drop them into dict for function
for rname in gsc.parser.read_regs:
regidx = yield getattr(decode.sigforms['X'], rname)
# read regs, drop them into dict for function
for rname in gsc.parser.read_regs:
regidx = yield getattr(decode.sigforms['X'], rname)
- d[rname] = gsc.gpr[regidx] # contents of regfile
- d["_%s" % rname] = regidx # actual register value
+ d[rname] = gsc.gpr[regidx]
# contents of regfile
+ d["_%s" % rname] = regidx
# actual register value
print("read reg", rname, regidx, hex(d[rname].value))
exec(compiled_code, d) # code gets executed here in dict "d"
print("read reg", rname, regidx, hex(d[rname].value))
exec(compiled_code, d) # code gets executed here in dict "d"
@@
-339,7
+343,8
@@
def test():
for j in range(16):
hexstr.append("%02x" % gsc.mem.mem[i+j])
hexstr = ' '.join(hexstr)
for j in range(16):
hexstr.append("%02x" % gsc.mem.mem[i+j])
hexstr = ' '.join(hexstr)
- print ("mem %4x" % i, hexstr)
+ print("mem %4x" % i, hexstr)
+
if __name__ == '__main__':
test()
if __name__ == '__main__':
test()