diff --git a/lightmotif/src/pli/dispatch.rs b/lightmotif/src/pli/dispatch.rs index f6a40103f44cb7371488e1228f06ea1bf3f402a9..7fa8add52fd416c7f9d94fe0065c370393fbb332 100644 --- a/lightmotif/src/pli/dispatch.rs +++ b/lightmotif/src/pli/dispatch.rs @@ -198,7 +198,6 @@ impl<A: Alphabet> Maximum<u8, <Dispatch as Backend>::LANES> for Pipeline<A, Disp scores: &StripedScores<u8, <Dispatch as Backend>::LANES>, ) -> Option<MatrixCoordinates> { match self.backend { - // FIXME !!!! #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] Dispatch::Avx2 => Avx2::argmax_u8(scores), // #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] diff --git a/lightmotif/src/pli/platform/avx2.rs b/lightmotif/src/pli/platform/avx2.rs index 8f90e9d957cea4cc7841e62b670d896d3b3b83a5..1e731f098aa768aba8d5c319c3fdfdfe4e92ae84 100644 --- a/lightmotif/src/pli/platform/avx2.rs +++ b/lightmotif/src/pli/platform/avx2.rs @@ -438,8 +438,8 @@ unsafe fn argmax_u8_avx2( let r1 = _mm256_unpacklo_epi8(r, _mm256_setzero_si256()); let r2 = _mm256_unpackhi_epi8(r, _mm256_setzero_si256()); // compare scores to local maximums - let c1 = _mm256_or_si256(_mm256_cmpgt_epi16(r1, s1), _mm256_cmpeq_epi16(r1, s1)); - let c2 = _mm256_or_si256(_mm256_cmpgt_epi16(r2, s2), _mm256_cmpeq_epi16(r2, s2)); + let c1 = _mm256_cmpgt_epi16(s1, r1); + let c2 = _mm256_cmpgt_epi16(s2, r2); // replace indices of new local maximums p1 = _mm256_blendv_epi8(p1, index, c1); p2 = _mm256_blendv_epi8(p2, index, c2);