Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SVP64RMFields(SelectableIntMapping):
- def __init__(self, value=0):
- self.spr = SelectableInt(value=value, bits=24)
- return super().__init__(si=self.spr, 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),
- ])),
- })
- SVP64RM_MMODE_SIZE = len(SVP64RMFields().mmode.br)
- SVP64RM_MASK_SIZE = len(SVP64RMFields().mask.br)
- SVP64RM_ELWIDTH_SIZE = len(SVP64RMFields().elwidth.br)
- SVP64RM_EWSRC_SIZE = len(SVP64RMFields().ewsrc.br)
- SVP64RM_SUBVL_SIZE = len(SVP64RMFields().subvl.br)
- SVP64RM_EXTRA2_SPEC_SIZE = len(SVP64RMFields().extra2[0].br)
- SVP64RM_EXTRA3_SPEC_SIZE = len(SVP64RMFields().extra3[0].br)
- SVP64RM_SMASK_SIZE = len(SVP64RMFields().smask.br)
- SVP64RM_MODE_SIZE = len(SVP64RMFields().mode.br)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement