Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SVP64RMFields(SelectableIntMapping, bits=24, fields={
- "spr": range(24),
- # SVP64 RM fields: see https://libre-soc.org/openpower/sv/svp64/
- "mmode": (0,),
- "mask": range(1, 4),
- "elwidth": range(4, 6),
- "ewsrc": range(6, 8),
- "subvl": range(8, 10),
- "extra": range(10, 19),
- "mode": range(19, 24),
- # these cover the same extra field, split into parts as EXTRA2
- "extra2": dict(enumerate([
- range(10, 12),
- range(12, 14),
- range(14, 16),
- range(16, 18),
- ])),
- "smask": range(16, 19),
- # and here as well, but EXTRA3
- "extra3": dict(enumerate([
- range(10, 13),
- range(13, 16),
- range(16, 19),
- ])),
- }):
- def __init__(self, value=0):
- super().__init__(value=value)
- self.spr = self
- SVP64RM_MMODE_SIZE = len(SVP64RMFields.mmode)
- SVP64RM_MASK_SIZE = len(SVP64RMFields.mask)
- SVP64RM_ELWIDTH_SIZE = len(SVP64RMFields.elwidth)
- SVP64RM_EWSRC_SIZE = len(SVP64RMFields.ewsrc)
- SVP64RM_SUBVL_SIZE = len(SVP64RMFields.subvl)
- SVP64RM_EXTRA2_SPEC_SIZE = len(SVP64RMFields.extra2[0])
- SVP64RM_EXTRA3_SPEC_SIZE = len(SVP64RMFields.extra3[0])
- SVP64RM_SMASK_SIZE = len(SVP64RMFields.smask)
- SVP64RM_MODE_SIZE = len(SVP64RMFields.mode)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement