aboutsummaryrefslogtreecommitdiff
path: root/src/arch/avx2.h
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-08-06 16:34:21 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2025-08-06 16:52:12 +0200
commit57a7520545134ab95f7bb0397dcbe991c906a3e9 (patch)
tree689e20a92ec3830533d2fb868e5dc141dec45877 /src/arch/avx2.h
parenta5c9b857a346343443baf49679eebf12c18b4008 (diff)
downloadnissy-core-57a7520545134ab95f7bb0397dcbe991c906a3e9.tar.gz
nissy-core-57a7520545134ab95f7bb0397dcbe991c906a3e9.zip
Added HTR solver
Diffstat (limited to 'src/arch/avx2.h')
-rw-r--r--src/arch/avx2.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/arch/avx2.h b/src/arch/avx2.h
index 74aad53..1c7248b 100644
--- a/src/arch/avx2.h
+++ b/src/arch/avx2.h
@@ -437,5 +437,27 @@ is_eo_even(cube_t cube)
437 e = _mm256_slli_epi16(e, 7-EOSHIFT); 437 e = _mm256_slli_epi16(e, 7-EOSHIFT);
438 mask = _mm256_movemask_epi8(e); 438 mask = _mm256_movemask_epi8(e);
439 439
440 return popcount_u32(mask) % 2; 440 return popcount_u32(mask) % 2 == 0;
441}
442
443STATIC_INLINE uint64_t
444coord_epudsep(cube_t cube)
445{
446 uint8_t aux[32];
447
448 _mm256_storeu_si256((__m256i_u *)aux, cube);
449 return coord_epudsep_array(aux + 16);
450}
451
452STATIC_INLINE cube_t
453invcoord_epudsep(uint64_t i)
454{
455 cube_t cube, elow;
456 uint8_t e[32];
457
458 invcoord_epudsep_array(i, e+16);
459 elow = _mm256_load_si256((__m256i *)e);
460 cube = _mm256_set_epi64x(SOLVED_H, 0, 0, SOLVED_L);
461
462 return _mm256_or_si256(elow, cube);
441} 463}

Generated with cgit - Back to sebastiano.tronto.net