]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
fix arm loadu_maskz()
authorKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Tue, 20 Jul 2021 11:38:19 +0000 (11:38 +0000)
committerKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Tue, 12 Oct 2021 08:51:34 +0000 (11:51 +0300)
src/util/supervector/arch/arm/impl.cpp

index 678ebdfbde42bd68fb31d84e59d92ecbeded2004..2c4cf3d67708e1badb5b7402a07661d7f7e7c5b0 100644 (file)
@@ -289,11 +289,11 @@ really_inline SuperVector<16> SuperVector<16>::load(void const *ptr)
 template <>
 really_inline SuperVector<16> SuperVector<16>::loadu_maskz(void const *ptr, uint8_t const len)
 {
-    uint8_t alignment = (uintptr_t)(ptr) & 15;
-    SuperVector<16> maskb = Ones() << alignment;
-    SuperVector<16> maske = Ones() >> (16 -len - alignment);
-    SuperVector<16> v = SuperVector<16>::loadu((const m128 *)ptr);
-    return {maskb.u.v128[0] & maske.u.v128[0] & v.u.v128[0]};
+    SuperVector<16> mask = Ones() >> (16 -len);
+    mask.print8("mask");
+    SuperVector<16> v = loadu(ptr);
+    v.print8("v");
+    return mask & v;
 }
 
 #ifdef HS_OPTIMIZE