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 |