View difference between Paste ID: FcFxbEQM and SBP2NrpT
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