diff options
Diffstat (limited to 'src/_trans_avx2.c')
| -rw-r--r-- | src/_trans_avx2.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/_trans_avx2.c b/src/_trans_avx2.c index e80bf79..c296f6d 100644 --- a/src/_trans_avx2.c +++ b/src/_trans_avx2.c | |||
| @@ -1,14 +1,15 @@ | |||
| 1 | static inline cube_t | 1 | static inline cube_t |
| 2 | flipallcorners(cube_t c) | 2 | flipallcorners(cube_t c) |
| 3 | { | 3 | { |
| 4 | cube_t shleft, shright, summed, newco, cleanco, ret; | 4 | cube_t co, shleft, shright, summed, newco, cleanco, ret; |
| 5 | 5 | ||
| 6 | shleft = _mm256_slli_si256(c, 1); | 6 | co = _mm256_and_si256(c, _co2_avx2); |
| 7 | shright = _mm256_srli_si256(c, 1); | 7 | shleft = _mm256_slli_epi32(co, 1); |
| 8 | shright = _mm256_srli_epi32(co, 1); | ||
| 8 | summed = _mm256_or_si256(shleft, shright); | 9 | summed = _mm256_or_si256(shleft, shright); |
| 9 | newco = _mm256_and_si256(summed, _co_avx2); | 10 | newco = _mm256_and_si256(summed, _co2_avx2); |
| 10 | cleanco = _mm256_andnot_si256(c, _co_avx2); | 11 | cleanco = _mm256_xor_si256(c, co); |
| 11 | ret = _mm256_and_si256(cleanco, newco); | 12 | ret = _mm256_or_si256(cleanco, newco); |
| 12 | 13 | ||
| 13 | return ret; | 14 | return ret; |
| 14 | } | 15 | } |
