from openpower.decoder.selectable_int import SelectableInt
from openpower.decoder.selectable_int import selectconcat as concat
from openpower.decoder.orderedset import OrderedSet
+from openpower.decoder.isafunctions.bcd import BCD_TO_DPD, DPD_TO_BCD
"""
fpheader = """
from openpower.decoder.helpers import (
- DOUBLE, SINGLE,
+ SINGLE,
FPADD32, FPSUB32, FPMUL32, FPDIV32,
FPADD64, FPSUB64, FPMUL64, FPDIV64,
FPMULADD32,
+ FPSIN32, FPCOS32,
)
from openpower.decoder.isafunctions.fpfromint import INT2FP
-
+from openpower.decoder.isafunctions.double2single import DOUBLE
"""
iinf = ''
# write headers: FP gets extra imports
f.write(header) # write out header
- if pagename.startswith("fp"):
+ if (pagename.startswith("fp") or
+ pagename.startswith("svfp")):
f.write(fpheader)
f.write("class %s:\n" % pagename)
op_fname = "op_%s" % page.replace(".", "_")
f.write(" @inject()\n")
f.write(" def %s(%s):\n" % (op_fname, args))
- if 'NIA' in pycode: # HACK - TODO fix
- f.write(" global NIA\n")
+ # blech! this works in combination with ISACaller
+ # @inject decorator, which works by injecting
+ # global variables into the function namespace.
+ for blech in ['NIA', 'end_loop']:
+ if blech in pycode: # HACK - TODO fix
+ f.write(" global %s\n" % blech)
pycode = pycode.split("\n")
pycode = '\n'.join(map(lambda x: " %s" % x, pycode))
pycode = pycode.rstrip()