Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- table = (
- ("prefix", (32, (
- ("insn", range(32)),
- ("major", range(0, 6)),
- ("pid", [7, 9]),
- ("rm", ([6, 8] + list(range(10, 32)))),
- ))),
- ("rm", (24, (
- ("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)),
- ("extra2_0", range(10, 12)),
- ("extra2_1", range(12, 14)),
- ("extra2_2", range(14, 16)),
- ("extra2_3", range(16, 18)),
- ("smask", range(16, 19)),
- ("extra3_0", range(10, 13)),
- ("extra3_1", range(13, 16)),
- ("extra3_2", range(16, 19)),
- ))),
- )
- for (tag, (size, fields)) in table:
- print(f"struct svp64_{tag} {{")
- print(f" uint32_t storage : {size};")
- print(f"}};")
- print(f"")
- print(f"enum svp64_{tag}_field {{")
- for (field, _) in fields:
- name = f"svp64_{tag}_{field}".upper()
- print(f" {name},".upper())
- print(f"}};")
- print("")
- print(f"static const struct svp64_field svp64_{tag}_fields[] = {{")
- for (field, mapping) in fields:
- name = f"svp64_{tag}_{field}".upper()
- mapping = tuple(map(lambda bit: str((size - 1) - bit), reversed(tuple(mapping))))
- print(f" [{name}] = {{{len(mapping)}, {{{', '.join(mapping)}}}}},")
- print(f"}};")
- print(f"")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement