aboutsummaryrefslogtreecommitdiff
path: root/src/arch/avx2.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/avx2.h')
-rw-r--r--src/arch/avx2.h42
1 files changed, 32 insertions, 10 deletions
diff --git a/src/arch/avx2.h b/src/arch/avx2.h
index 2c3371e..557ab49 100644
--- a/src/arch/avx2.h
+++ b/src/arch/avx2.h
@@ -6,16 +6,6 @@
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
19STATIC void 9STATIC void
20pieces(cube_t *cube, uint8_t c[static 8], uint8_t e[static 12]) 10pieces(cube_t *cube, uint8_t c[static 8], uint8_t e[static 12])
21{ 11{
@@ -26,6 +16,38 @@ pieces(cube_t *cube, uint8_t c[static 8], uint8_t e[static 12])
26 memcpy(e, aux+16, 12); 16 memcpy(e, aux+16, 12);
27} 17}
28 18
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
29STATIC_INLINE bool 51STATIC_INLINE bool
30equal(cube_t c1, cube_t c2) 52equal(cube_t c1, cube_t c2)
31{ 53{

Generated with cgit - Back to sebastiano.tronto.net