Advertisement
Guest User

Untitled

a guest
Apr 20th, 2022
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.50 KB | None | 0 0
  1. class SVP64RMFields(SelectableIntMapping):
  2.     def __init__(self, value=0):
  3.         self.spr = SelectableInt(value=value, bits=24)
  4.         return super().__init__(si=self.spr, fields={
  5.             "spr": range(24),
  6.             # SVP64 RM fields: see https://libre-soc.org/openpower/sv/svp64/
  7.             "mmode": (0,),
  8.             "mask": range(1, 4),
  9.             "elwidth": range(4, 6),
  10.             "ewsrc": range(6, 8),
  11.             "subvl": range(8, 10),
  12.             "extra": range(10, 19),
  13.             "mode": range(19, 24),
  14.             # these cover the same extra field, split into parts as EXTRA2
  15.             "extra2": dict(enumerate([
  16.                 range(10, 12),
  17.                 range(12, 14),
  18.                 range(14, 16),
  19.                 range(16, 18),
  20.             ])),
  21.             "smask": range(16, 19),
  22.             # and here as well, but EXTRA3
  23.             "extra3": dict(enumerate([
  24.                 range(10, 13),
  25.                 range(13, 16),
  26.                 range(16, 19),
  27.             ])),
  28.         })
  29.  
  30.  
  31. SVP64RM_MMODE_SIZE = len(SVP64RMFields().mmode.br)
  32. SVP64RM_MASK_SIZE = len(SVP64RMFields().mask.br)
  33. SVP64RM_ELWIDTH_SIZE = len(SVP64RMFields().elwidth.br)
  34. SVP64RM_EWSRC_SIZE = len(SVP64RMFields().ewsrc.br)
  35. SVP64RM_SUBVL_SIZE = len(SVP64RMFields().subvl.br)
  36. SVP64RM_EXTRA2_SPEC_SIZE = len(SVP64RMFields().extra2[0].br)
  37. SVP64RM_EXTRA3_SPEC_SIZE = len(SVP64RMFields().extra3[0].br)
  38. SVP64RM_SMASK_SIZE = len(SVP64RMFields().smask.br)
  39. SVP64RM_MODE_SIZE = len(SVP64RMFields().mode.br)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement