Commit eba5e7f2 authored by Keith Daigle's avatar Keith Daigle Committed by Facebook Github Bot

Fix to build SharedMutexTest on aarch64

Summary:
While trying to build folly on aarch64 found that the SharedMutexTest
wouldn't build because it uses RWTicketSpinLock which was only available
on x86 platforms.  Updated to allow build on aarch64 after suggestion by Orvid

Reviewed By: yfeldblum

Differential Revision: D6611609

fbshipit-source-id: 8ec477cdedac0f0a705608bbac42dd63b3efb919
parent ff18deaf
...@@ -143,6 +143,8 @@ pthread_rwlock_t Read 728698 24us 101ns 7.28ms 194us ...@@ -143,6 +143,8 @@ pthread_rwlock_t Read 728698 24us 101ns 7.28ms 194us
#include <x86intrin.h> #include <x86intrin.h>
#elif defined(_MSC_VER) && defined(FOLLY_X64) #elif defined(_MSC_VER) && defined(FOLLY_X64)
#define RW_SPINLOCK_USE_X86_INTRINSIC_ #define RW_SPINLOCK_USE_X86_INTRINSIC_
#elif FOLLY_AARCH64
#define RW_SPINLOCK_USE_X86_INTRINSIC_
#else #else
#undef RW_SPINLOCK_USE_X86_INTRINSIC_ #undef RW_SPINLOCK_USE_X86_INTRINSIC_
#endif #endif
...@@ -690,9 +692,9 @@ class RWTicketSpinLockT { ...@@ -690,9 +692,9 @@ class RWTicketSpinLockT {
void unlock() { void unlock() {
RWTicket t; RWTicket t;
t.whole = load_acquire(&ticket.whole); t.whole = load_acquire(&ticket.whole);
FullInt old = t.whole;
#ifdef RW_SPINLOCK_USE_SSE_INSTRUCTIONS_ #ifdef RW_SPINLOCK_USE_SSE_INSTRUCTIONS_
FullInt old = t.whole;
// SSE2 can reduce the lock and unlock overhead by 10% // SSE2 can reduce the lock and unlock overhead by 10%
static const QuarterInt kDeltaBuf[4] = { 1, 1, 0, 0 }; // write/read/user static const QuarterInt kDeltaBuf[4] = { 1, 1, 0, 0 }; // write/read/user
static const __m128i kDelta = IntTraitType::make128(kDeltaBuf); static const __m128i kDelta = IntTraitType::make128(kDeltaBuf);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment