Advertisement
Guest User

Untitled

a guest
Jun 29th, 2022
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. def indent(strings):
  2.     return map(lambda string: ("  " + string), strings)
  3.  
  4.  
  5. def register(index, regtype, flags, vector=False):
  6.     regmode = "v:" if vector else ""
  7.     regname = f"{regmode}{regtype}{index}"
  8.     return f"{{\"{regname}\", {index}, {flags}}}"
  9.  
  10.  
  11. def registers(regtype, start, end, flags, vector=False):
  12.     yield from sorted(map(lambda index: register(index, regtype, flags, vector), range(start, end)))
  13.  
  14.  
  15. def generator():
  16.     for (regtype, start, end, flags) in (
  17.                 ("r", 0, 32, "PPC_OPERAND_GPR"),
  18.                 ("r", 32, 256, "(PPC_OPERAND_GPR | PPC_OPERAND_SVP64)"),
  19.                 ("f", 0, 32, "PPC_OPERAND_FPR"),
  20.                 ("f", 32, 256, "(PPC_OPERAND_FPR | PPC_OPERAND_SVP64)"),
  21.                 ("cr", 0, 8, "PPC_OPERAND_CR"),
  22.             ):
  23.         for vector in (False, True):
  24.             yield from tuple(registers(regtype, start, end, flags, vector))
  25.  
  26.  
  27. print("const struct powerpc_pd_reg svp64_registers[] = {")
  28. for line in indent(sorted(generator())):
  29.     print(f"{line},")
  30. print("};")
  31.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement