From 8bacac732dcb2c0118e47e1bb81be855f4a0bf58 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Mon, 20 May 2024 17:39:07 +0200 Subject: Tests for gendata h48 --- src/cube_avx2.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/cube_avx2.h') diff --git a/src/cube_avx2.h b/src/cube_avx2.h index d39da94..934737c 100644 --- a/src/cube_avx2.h +++ b/src/cube_avx2.h @@ -207,7 +207,7 @@ _static_inline int64_t coord_fast_esep(cube_fast_t c) { cube_fast_t ep; - int64_t e, mem[4], i, j, k, l, ret1, ret2, bit1, bit2, is1; + int64_t e, mem[4], i, j, jj, k, l, ret1, ret2, bit1, bit2, is1; ep = _mm256_and_si256(c, _ep_avx2); _mm256_storeu_si256((__m256i *)mem, ep); @@ -225,7 +225,8 @@ coord_fast_esep(cube_fast_t c) ret1 += bit2 * binomial[11-i][k]; k -= bit2; - ret2 += is1 * binomial[7-j][l]; + jj = j < 8; + ret2 += jj * is1 * binomial[7-(j*jj)][l]; l -= is1; j += (1-bit2); } @@ -274,7 +275,7 @@ _static_inline cube_fast_t invcoord_fast_esep(int64_t esep) { cube_fast_t eee, ret; - int64_t i, j, k, l, s, v, w, is1, set1, set2; + int64_t i, j, jj, k, l, s, v, w, is1, set1, set2; uint8_t bit2, bit1, mem[32]; uint8_t slice[3] = {0}; @@ -283,7 +284,8 @@ invcoord_fast_esep(int64_t esep) for (i = 0, j = 0, k = 4, l = 4; i < 12; i++) { v = binomial[11-i][k]; - w = binomial[7-j][l]; + jj = j < 8; + w = jj * binomial[7-(j*jj)][l]; bit2 = set2 >= v; bit1 = set1 >= w; is1 = (1 - bit2) * bit1; -- cgit v1.3