summaryrefslogtreecommitdiff
path: root/genwinmasks.py
blob: 45a9f58c3de19c2695af9f11bcd56ab77343aabe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python3

masks = []

def gen(x, y, z, dx, dy, dz):
    if dx == 0 and dy == 0 and dz == 0: return
    if x + 4 * dx > 4 or y + 4 * dy > 4 or z + 4 * dz > 4: return

    n = 0
    for i in range(4):
        n |= 1 << (16 * y + 4 * x + z)
        x, y, z = x + dx, y + dy, z + dz

    masks.append(n)


for x in range(4):
    for y in range(4):
        for z in range(4):
            for dx in range(2):
                for dy in range(2):
                    for dz in range(2):
                        gen(x, y, z, dx, dy, dz)


masks.sort()

print("static u64 winmasks[{}] = {{".format(len(masks)))
for i in range((len(masks) + 3) // 4):
    print("\t" + " ".join(hex(n) + "ULL," for n in masks[4*i:4*i+4]))
print("};")