aboutsummaryrefslogtreecommitdiff
path: root/src/arch/avx2.h
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2024-10-04 12:15:37 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2024-10-04 12:15:37 +0200
commit0de1530f4cea21f2bc0a0e0f1cbf9da016c7bda5 (patch)
treea0a64424190588e5f734c257dd312e1f89fcd1eb /src/arch/avx2.h
parent80b065f757240af7920862b3e09f32a6dc06d392 (diff)
downloadnissy-core-0de1530f4cea21f2bc0a0e0f1cbf9da016c7bda5.tar.gz
nissy-core-0de1530f4cea21f2bc0a0e0f1cbf9da016c7bda5.zip
Revert table-based transformations
Long live the giant switch!
Diffstat (limited to 'src/arch/avx2.h')
-rw-r--r--src/arch/avx2.h42
1 files changed, 10 insertions, 32 deletions
diff --git a/src/arch/avx2.h b/src/arch/avx2.h
index 557ab49..2c3371e 100644
--- a/src/arch/avx2.h
+++ b/src/arch/avx2.h
@@ -6,6 +6,16 @@
6#define EO_AVX2 \ 6#define EO_AVX2 \
7 _mm256_set_epi64x(INT64_C(0x10101010), INT64_C(0x1010101010101010), 0, 0) 7 _mm256_set_epi64x(INT64_C(0x10101010), INT64_C(0x1010101010101010), 0, 0)
8 8
9#define STATIC_CUBE(c_ufr, c_ubl, c_dfl, c_dbr, c_ufl, c_ubr, c_dfr, c_dbl, \
10 e_uf, e_ub, e_db, e_df, e_ur, e_ul, e_dl, e_dr, e_fr, e_fl, e_bl, e_br) \
11 _mm256_set_epi8(0, 0, 0, 0, e_br, e_bl, e_fl, e_fr, \
12 e_dr, e_dl, e_ul, e_ur, e_df, e_db, e_ub, e_uf, \
13 0, 0, 0, 0, 0, 0, 0, 0, \
14 c_dbl, c_dfr, c_ubr, c_ufl, c_dbr, c_dfl, c_ubl, c_ufr)
15#define ZERO_CUBE _mm256_set_epi64x(0, 0, 0, 0)
16#define SOLVED_CUBE STATIC_CUBE( \
17 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
18
9STATIC void 19STATIC void
10pieces(cube_t *cube, uint8_t c[static 8], uint8_t e[static 12]) 20pieces(cube_t *cube, uint8_t c[static 8], uint8_t e[static 12])
11{ 21{
@@ -16,38 +26,6 @@ pieces(cube_t *cube, uint8_t c[static 8], uint8_t e[static 12])
16 memcpy(e, aux+16, 12); 26 memcpy(e, aux+16, 12);
17} 27}
18 28
19STATIC_INLINE cube_t
20cubefrompieces(
21 uint8_t c_ufr,
22 uint8_t c_ubl,
23 uint8_t c_dfl,
24 uint8_t c_dbr,
25 uint8_t c_ufl,
26 uint8_t c_ubr,
27 uint8_t c_dfr,
28 uint8_t c_dbl,
29
30 uint8_t e_uf,
31 uint8_t e_ub,
32 uint8_t e_db,
33 uint8_t e_df,
34 uint8_t e_ur,
35 uint8_t e_ul,
36 uint8_t e_dl,
37 uint8_t e_dr,
38 uint8_t e_fr,
39 uint8_t e_fl,
40 uint8_t e_bl,
41 uint8_t e_br
42) {
43 return _mm256_set_epi8(
44 0, 0, 0, 0, e_br, e_bl, e_fl, e_fr,
45 e_dr, e_dl, e_ul, e_ur, e_df, e_db, e_ub, e_uf,
46 0, 0, 0, 0, 0, 0, 0, 0,
47 c_dbl, c_dfr, c_ubr, c_ufl, c_dbr, c_dfl, c_ubl, c_ufr
48 );
49}
50
51STATIC_INLINE bool 29STATIC_INLINE bool
52equal(cube_t c1, cube_t c2) 30equal(cube_t c1, cube_t c2)
53{ 31{

Generated with cgit - Back to sebastiano.tronto.net