From bdb5781ef72aba6dea97e04d5fc12497b6b19a5f Mon Sep 17 00:00:00 2001 From: dzaima Date: Mon, 29 Jul 2024 04:47:32 +0300 Subject: [PATCH] make bitp_get & bitp_set load/store u8 instead of u64 --- src/core/numarr.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/numarr.h b/src/core/numarr.h index bef7fae7..cdccedba 100644 --- a/src/core/numarr.h +++ b/src/core/numarr.h @@ -25,13 +25,13 @@ typedef TyArr BitArr; #define BIT_N(IA) (((IA)+63) >> 6) // u64 count needed to store IA bits static inline void bitp_set(u64* arr, u64 n, bool v) { - u64 m = ((u64)1)<<(n&63); - if (v) arr[n>>6]|= m; - else arr[n>>6]&= ~m; + u64 m = ((u64)1)<<(n&7); + if (v) ((u8*)arr)[n>>3]|= m; + else ((u8*)arr)[n>>3]&= ~m; // arr[n>>6] = (arr[n>>6]&(~m)) | (((u64)v)<<(n&63)); } static inline bool bitp_get(u64* arr, u64 n) { - return (arr[n>>6] >> (n&63)) & 1; + return (((u8*)arr)[n>>3] >> (n&7)) & 1; } static inline u64 bitp_l0(u64* arr, u64 ia) { // last u64 of the array, with the tail set to 0s return ia&63? arr[ia>>6]&((1ULL<<(ia&63))-1) : 0;