From 6bbf2c5eebd865cff0688adc5e290e151a16189b Mon Sep 17 00:00:00 2001 From: Martin Tzvetanov Grigorov Date: Thu, 4 Apr 2024 14:43:07 +0300 Subject: [PATCH 1/2] Change GetUnique() return type from char to init8_t `char` is unsigned on aarch64 Signed-off-by: Martin Tzvetanov Grigorov --- src/common/kmer_index/extension_index/inout_mask.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/kmer_index/extension_index/inout_mask.hpp b/src/common/kmer_index/extension_index/inout_mask.hpp index 78cbae492..7af5b1d27 100644 --- a/src/common/kmer_index/extension_index/inout_mask.hpp +++ b/src/common/kmer_index/extension_index/inout_mask.hpp @@ -63,8 +63,8 @@ class InOutMask { return unique[mask]; } - static constexpr char GetUnique(uint8_t mask) { - constexpr char next[] = + static constexpr int8_t GetUnique(uint8_t mask) { + constexpr int8_t next[] = { -1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1 }; return next[mask]; From c9e422388b66e3a4fca67791e2e1208db8b7af4b Mon Sep 17 00:00:00 2001 From: Martin Grigorov Date: Thu, 4 Apr 2024 22:24:55 +0300 Subject: [PATCH 2/2] Use 0xFF instead of -1 for the unique mask `char` type is unsigned on aarch64, so negative values cannot be used --- src/common/kmer_index/extension_index/inout_mask.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/common/kmer_index/extension_index/inout_mask.hpp b/src/common/kmer_index/extension_index/inout_mask.hpp index 7af5b1d27..2821ec359 100644 --- a/src/common/kmer_index/extension_index/inout_mask.hpp +++ b/src/common/kmer_index/extension_index/inout_mask.hpp @@ -63,10 +63,10 @@ class InOutMask { return unique[mask]; } - static constexpr int8_t GetUnique(uint8_t mask) { - constexpr int8_t next[] = - { -1, 0, 1, -1, 2, -1, -1, -1, - 3, -1, -1, -1, -1, -1, -1, -1 }; + static constexpr char GetUnique(uint8_t mask) { + constexpr char next[] = + { UINT8_C(0xFF), 0, 1, UINT8_C(0xFF), 2, UINT8_C(0xFF), UINT8_C(0xFF), UINT8_C(0xFF), + 3, UINT8_C(0xFF), UINT8_C(0xFF), UINT8_C(0xFF), UINT8_C(0xFF), UINT8_C(0xFF), UINT8_C(0xFF), UINT8_C(0xFF) }; return next[mask]; }