From eddce26ac44212cd65d2b7ba78ee46320994f5c1 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sat, 13 Mar 2021 17:20:30 +0100 Subject: [PATCH] Disable multiversioning on non-x86 platforms --- include/dwarfs/compiler.h | 4 ++++ include/dwarfs/nilsimsa.h | 2 +- src/dwarfs/inode_manager.cpp | 2 +- src/dwarfs/nilsimsa.cpp | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/dwarfs/compiler.h b/include/dwarfs/compiler.h index a7d53597..0a5edcdc 100644 --- a/include/dwarfs/compiler.h +++ b/include/dwarfs/compiler.h @@ -36,3 +36,7 @@ #define DWARFS_SANITIZE_THREAD 1 #endif #endif + +#if !defined(DWARFS_SANITIZE_THREAD) && defined(__x86_64__) +#define DWARFS_MULTIVERSIONING 1 +#endif diff --git a/include/dwarfs/nilsimsa.h b/include/dwarfs/nilsimsa.h index 11d30610..3059b900 100644 --- a/include/dwarfs/nilsimsa.h +++ b/include/dwarfs/nilsimsa.h @@ -51,7 +51,7 @@ class nilsimsa { void update(uint8_t const* data, size_t size); std::vector finalize() const; -#ifndef DWARFS_SANITIZE_THREAD +#ifdef DWARFS_MULTIVERSIONING __attribute__((target("popcnt"))) static int similarity(uint64_t const* a, uint64_t const* b); diff --git a/src/dwarfs/inode_manager.cpp b/src/dwarfs/inode_manager.cpp index 187c7a93..73954363 100644 --- a/src/dwarfs/inode_manager.cpp +++ b/src/dwarfs/inode_manager.cpp @@ -75,7 +75,7 @@ namespace dwarfs { } \ static_assert(true, "") -#ifndef DWARFS_SANITIZE_THREAD +#ifdef DWARFS_MULTIVERSIONING #ifdef __clang__ __attribute__((target("arch=skylake"))) DWARFS_FIND_SIMILAR_INODE_IMPL; #endif diff --git a/src/dwarfs/nilsimsa.cpp b/src/dwarfs/nilsimsa.cpp index d291fc20..5899e2a9 100644 --- a/src/dwarfs/nilsimsa.cpp +++ b/src/dwarfs/nilsimsa.cpp @@ -197,7 +197,7 @@ void nilsimsa::update(uint8_t const* data, size_t size) { std::vector nilsimsa::finalize() const { return impl_->finalize(); } -#ifndef DWARFS_SANITIZE_THREAD +#ifdef DWARFS_MULTIVERSIONING __attribute__((target("popcnt"))) int nilsimsa::similarity(uint64_t const* a, uint64_t const* b) { DWARFS_NILSIMSA_SIMILARITY(return, a, b);