SHOW:
|
|
- or go back to the newest paste.
| 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_GPR | PPC_OPERAND_SVP64)"),
|
| 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 |