1 from openpower
.decoder
.selectable_int
import (FieldSelectableInt
,
4 from openpower
.sv
.svstate
import SVSTATERec
6 from copy
import deepcopy
7 from openpower
.util
import log
10 class SVP64State(SelectableInt
):
11 def __init__(self
, value
=0):
12 SelectableInt
.__init
__(self
, value
, 64)
14 # set up sub-fields from Record layout
16 l
= deepcopy(SVSTATERec
.layout
)
18 for field
, width
in l
:
20 fs
= tuple(range(offs
, end
))
21 v
= FieldSelectableInt(self
, fs
)
23 log("SVSTATE setup field", field
, offs
, end
)
28 return self
.fsi
['maxvl'].asint(msb0
=True)
31 def maxvl(self
, value
):
32 self
.fsi
['maxvl'].eq(value
)
36 return self
.fsi
['vl'].asint(msb0
=True)
40 self
.fsi
['vl'].eq(value
)
44 return self
.fsi
['dststep'].asint(msb0
=True)
47 def dststep(self
, value
):
48 self
.fsi
['dststep'].eq(value
)
52 return self
.fsi
['srcstep'].asint(msb0
=True)
55 def srcstep(self
, value
):
56 self
.fsi
['srcstep'].eq(value
)
60 return self
.fsi
['subvl'].asint(msb0
=True)
63 def subvl(self
, value
):
64 self
.fsi
['subvl'].eq(value
)
68 return self
.fsi
['mi0'].asint(msb0
=True)
72 self
.fsi
['mi0'].eq(value
)
76 return self
.fsi
['mi1'].asint(msb0
=True)
80 self
.fsi
['mi1'].eq(value
)
84 return self
.fsi
['mi2'].asint(msb0
=True)
88 self
.fsi
['mi2'].eq(value
)
92 return self
.fsi
['mo0'].asint(msb0
=True)
96 self
.fsi
['mo0'].eq(value
)
100 return self
.fsi
['mo1'].asint(msb0
=True)
103 def mo1(self
, value
):
104 self
.fsi
['mo1'].eq(value
)
108 return self
.fsi
['SVme'].asint(msb0
=True)
111 def SVme(self
, value
):
112 self
.fsi
['SVme'].eq(value
)
116 return self
.fsi
['vfirst'].asint(msb0
=True)
119 def vfirst(self
, value
):
120 self
.fsi
['vfirst'].eq(value
)
124 return self
.fsi
['RMpst'].asint(msb0
=True)
127 def RMpst(self
, value
):
128 self
.fsi
['RMpst'].eq(value
)