aboutsummaryrefslogtreecommitdiff
path: root/src/arch/coordinates_unoptimized.h
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-07-17 07:57:18 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2025-07-17 07:57:18 +0200
commit5e741a00a1350477c7d8778cb466c8efa27b152d (patch)
tree37d3ab4b00f1b735f5da3b8f0065f1f19e920678 /src/arch/coordinates_unoptimized.h
parent37dc364aaf751a14ff8c7e74e6bae59128c558df (diff)
downloadnissy-core-5e741a00a1350477c7d8778cb466c8efa27b152d.tar.gz
nissy-core-5e741a00a1350477c7d8778cb466c8efa27b152d.zip
Working drslice (same results as nissy-classic)
Diffstat (limited to 'src/arch/coordinates_unoptimized.h')
-rw-r--r--src/arch/coordinates_unoptimized.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/arch/coordinates_unoptimized.h b/src/arch/coordinates_unoptimized.h
new file mode 100644
index 0000000..c553b2b
--- /dev/null
+++ b/src/arch/coordinates_unoptimized.h
@@ -0,0 +1,55 @@
1STATIC_INLINE int64_t coord_cp(cube_t);
2STATIC_INLINE cube_t invcoord_cp(int64_t);
3STATIC_INLINE int64_t coord_epud(cube_t);
4STATIC_INLINE cube_t invcoord_epud(int64_t);
5
6STATIC_INLINE int64_t
7coord_cp(cube_t cube)
8{
9 int i;
10 uint8_t c[8], e[12];
11
12 pieces(&cube, c, e);
13 for (i = 0; i < 8; i++)
14 c[i] &= PBITS;
15
16 return permtoindex(8, c);
17}
18
19STATIC_INLINE cube_t
20invcoord_cp(int64_t i)
21{
22 uint8_t c[8];
23
24 indextoperm(i, 8, c);
25
26 return STATIC_CUBE(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7],
27 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
28}
29
30STATIC_INLINE int64_t
31coord_epud(cube_t cube)
32{
33 int i;
34 uint8_t c[8], e[12];
35
36 pieces(&cube, c, e);
37 DBG_ASSERT(isperm(8, e), -1,
38 "Cannot compute epud coordinate: edges not separated");
39
40 for (i = 0; i < 8; i++)
41 e[i] &= PBITS;
42
43 return permtoindex(8, e);
44}
45
46STATIC_INLINE cube_t
47invcoord_epud(int64_t i)
48{
49 uint8_t e[8];
50
51 indextoperm(i, 8, e);
52
53 return STATIC_CUBE(0, 1, 2, 3, 4, 5, 6, 7,
54 e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], 8, 9, 10, 11);
55}

Generated with cgit - Back to sebastiano.tronto.net