]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
scalar implementations of diffrich256 and diffrich384
authorKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Fri, 16 Oct 2020 10:02:40 +0000 (13:02 +0300)
committerKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Fri, 16 Oct 2020 10:02:40 +0000 (13:02 +0300)
src/util/arch/arm/cpuid_flags.c
src/util/arch/common/simd_utils.h

index 8dbab473c25f8846a37ba4f076199cf5e219a59f..1ba1a4973ba1aeca611c2a4d92687b878022d10b 100644 (file)
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "cpuid_flags.h"
+#include "util/arch/common/cpuid_flags.h"
 #include "ue2common.h"
 #include "hs_compile.h" // for HS_MODE_ flags
 #include "util/arch.h"
 
 u64a cpuid_flags(void) {
-     return cap;
+     return 0;
 }
 
 u32 cpuid_tune(void) {
index 56d9dbafd9dd3e97f6194e35e75a576f9d9174d0..25cd03cc0246f5dc9cc92ad999209a2e484e9d0f 100644 (file)
@@ -152,7 +152,7 @@ static really_inline int isnonzero256(m256 a) {
  */
 static really_inline
 u32 diffrich256(m256 a, m256 b) {
-    return diffrich128(a.lo, b.lo) | (diffrich128(a.hi, b.hi) << 8);
+    return diffrich128(a.lo, b.lo) | (diffrich128(a.hi, b.hi) << 4);
 }
 
 /**
@@ -384,6 +384,15 @@ static really_inline int isnonzero384(m384 a) {
     return isnonzero128(or128(or128(a.lo, a.mid), a.hi));
 }
 
+/**
+ * "Rich" version of diff384(). Takes two vectors a and b and returns a 12-bit
+ * mask indicating which 32-bit words contain differences.
+ */
+static really_inline
+u32 diffrich384(m384 a, m384 b) {
+    return diffrich128(a.lo, b.lo) | (diffrich128(a.mid, b.mid) << 4) | (diffrich128(a.hi, b.hi) << 8);
+}
+
 /**
  * "Rich" version of diff384(), 64-bit variant. Takes two vectors a and b and
  * returns a 12-bit mask indicating which 64-bit words contain differences.