selectconcat, FieldSelectableInt)
from openpower.decoder.selectable_int import EFFECTIVELY_UNLIMITED as EU
from nmutil.divmod import trunc_divs, trunc_rems
-from operator import floordiv, mod
+from operator import floordiv, mod, truediv # truediv used by bfp_* functions
from openpower.decoder.selectable_int import selectltu as ltu
from openpower.decoder.selectable_int import selectgtu as gtu
from openpower.decoder.selectable_int import check_extsign
from openpower.fpscr import FPSCRState
+from openpower.xer import XERState
+from openpower.decoder.isa.svshape import SVSHAPE
+from openpower.decoder.isa.svstate import SVP64State
from openpower.decoder.fp_working_format import (
BFPState, SelectableMSB0Fraction)
"""
if isinstance(inp, (str, int)):
return inp
+ if isinstance(inp, FPSCRState):
+ return FPSCRState(inp)
+ if isinstance(inp, XERState):
+ return XERState(inp)
+ if isinstance(inp, SVSHAPE):
+ return SVSHAPE(inp)
+ if isinstance(inp, SVP64State):
+ return SVP64State(inp)
if isinstance(inp, (SelectableInt, FieldSelectableInt)):
return SelectableInt(inp)
if isinstance(inp, BFPState):
raise NotImplementedError("not yet implemented for non-BFPState values")
+def SetFX(fpscr, field):
+ assert isinstance(fpscr, FPSCRState), "SetFX only works on FPSCR fields"
+ if eq(getattr(fpscr, field), SelectableInt(0, 1)):
+ setattr(fpscr, field, SelectableInt(1, 1))
+ fpscr.FX = SelectableInt(1, 1)
+
+
class ISACallerHelper:
def __init__(self, XLEN, FPSCR):
self.__XLEN = XLEN