Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def indent(strings):
- return map(lambda string: (" " + string), strings)
- def register(index, regtype, flags, vector=False):
- regmode = "v:" if vector else ""
- regname = f"{regmode}{regtype}{index}"
- return f"{{\"{regname}\", {index}, {flags}}}"
- def registers(regtype, start, end, flags, vector=False):
- yield from sorted(map(lambda index: register(index, regtype, flags, vector), range(start, end)))
- def generator():
- for (regtype, start, end, flags) in (
- ("r", 0, 32, "PPC_OPERAND_GPR"),
- ("r", 32, 256, "(PPC_OPERAND_GPR | PPC_OPERAND_SVP64)"),
- ("f", 0, 32, "PPC_OPERAND_FPR"),
- ("f", 32, 256, "(PPC_OPERAND_FPR | PPC_OPERAND_SVP64)"),
- ("cr", 0, 8, "PPC_OPERAND_CR"),
- ):
- for vector in (False, True):
- yield from tuple(registers(regtype, start, end, flags, vector))
- print("const struct powerpc_pd_reg svp64_registers[] = {")
- for line in indent(sorted(generator())):
- print(f"{line},")
- print("};")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement