Advertisement
Guest User

Untitled

a guest
Apr 19th, 2022
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.42 KB | None | 0 0
  1. table = (
  2.     ("prefix", (32, (
  3.         ("insn", range(32)),
  4.         ("major", range(0, 6)),
  5.         ("pid", [7, 9]),
  6.         ("rm", ([6, 8] + list(range(10, 32)))),
  7.     ))),
  8.     ("rm", (24, (
  9.         ("mmode", [0]),
  10.         ("mask", range(1, 4)),
  11.         ("elwidth", range(4, 6)),
  12.         ("ewsrc", range(6, 8)),
  13.         ("subvl", range(8, 10)),
  14.         ("extra", range(10, 19)),
  15.         ("mode", range(19, 24)),
  16.         ("extra2_0", range(10, 12)),
  17.         ("extra2_1", range(12, 14)),
  18.         ("extra2_2", range(14, 16)),
  19.         ("extra2_3", range(16, 18)),
  20.         ("smask", range(16, 19)),
  21.         ("extra3_0", range(10, 13)),
  22.         ("extra3_1", range(13, 16)),
  23.         ("extra3_2", range(16, 19)),
  24.     ))),
  25. )
  26.  
  27. for (tag, (size, fields)) in table:
  28.     print(f"struct svp64_{tag} {{")
  29.     print(f"    uint32_t storage : {size};")
  30.     print(f"}};")
  31.     print(f"")
  32.     print(f"enum svp64_{tag}_field {{")
  33.     for (field, _) in fields:
  34.         name = f"svp64_{tag}_{field}".upper()
  35.         print(f"    {name},".upper())
  36.     print(f"}};")
  37.     print("")
  38.     print(f"static const struct svp64_field svp64_{tag}_fields[] = {{")
  39.     for (field, mapping) in fields:
  40.         name = f"svp64_{tag}_{field}".upper()
  41.         mapping = tuple(map(lambda bit: str((size - 1) - bit), reversed(tuple(mapping))))
  42.         print(f"    [{name}] = {{{len(mapping)}, {{{', '.join(mapping)}}}}},")
  43.     print(f"}};")
  44.     print(f"")
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement