diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2025-08-06 16:34:21 +0200 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2025-08-06 16:52:12 +0200 |
| commit | 57a7520545134ab95f7bb0397dcbe991c906a3e9 (patch) | |
| tree | 689e20a92ec3830533d2fb868e5dc141dec45877 /src/arch/avx2.h | |
| parent | a5c9b857a346343443baf49679eebf12c18b4008 (diff) | |
| download | nissy-core-57a7520545134ab95f7bb0397dcbe991c906a3e9.tar.gz nissy-core-57a7520545134ab95f7bb0397dcbe991c906a3e9.zip | |
Added HTR solver
Diffstat (limited to 'src/arch/avx2.h')
| -rw-r--r-- | src/arch/avx2.h | 24 |
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 | |||
| 443 | STATIC_INLINE uint64_t | ||
| 444 | coord_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 | |||
| 452 | STATIC_INLINE cube_t | ||
| 453 | invcoord_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 | } |
