summaryrefslogtreecommitdiff
path: root/genwinmasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'genwinmasks.py')
-rwxr-xr-xgenwinmasks.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/genwinmasks.py b/genwinmasks.py
new file mode 100755
index 0000000..45a9f58
--- /dev/null
+++ b/genwinmasks.py
@@ -0,0 +1,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("};")