From f6e6db22a08d7787e2ed3ba9919858280162ee25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Tue, 10 Oct 2017 20:43:55 -0700 Subject: [PATCH] Cleanup. --- include/bx/cpu.h | 19 ------------------- include/bx/inline/cpu.inl | 25 ++++++++++++++++++++++++- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/include/bx/cpu.h b/include/bx/cpu.h index ebd4868..fdf8e7e 100644 --- a/include/bx/cpu.h +++ b/include/bx/cpu.h @@ -8,25 +8,6 @@ #include "bx.h" -#if BX_COMPILER_MSVC -# include // math.h is included because VS bitches: - // warning C4985: 'ceil': attributes not present on previous declaration. - // must be included before intrin.h. -# include -# include -# if BX_PLATFORM_WINRT -# define _InterlockedExchangeAdd64 InterlockedExchangeAdd64 -# endif // BX_PLATFORM_WINRT -extern "C" void _ReadBarrier(); -extern "C" void _WriteBarrier(); -extern "C" void _ReadWriteBarrier(); -# pragma intrinsic(_ReadBarrier) -# pragma intrinsic(_WriteBarrier) -# pragma intrinsic(_ReadWriteBarrier) -# pragma intrinsic(_InterlockedExchangeAdd) -# pragma intrinsic(_InterlockedCompareExchange) -#endif // BX_COMPILER_MSVC - namespace bx { /// diff --git a/include/bx/inline/cpu.inl b/include/bx/inline/cpu.inl index 2e7ae32..530ef54 100644 --- a/include/bx/inline/cpu.inl +++ b/include/bx/inline/cpu.inl @@ -7,6 +7,30 @@ # error "Must be included from bx/cpu.h!" #endif // BX_CPU_H_HEADER_GUARD +#if BX_COMPILER_MSVC +# if BX_PLATFORM_WINRT +# define _InterlockedExchangeAdd64 InterlockedExchangeAdd64 +# endif // BX_PLATFORM_WINRT + +extern "C" void _ReadBarrier(); +# pragma intrinsic(_ReadBarrier) + +extern "C" void _WriteBarrier(); +# pragma intrinsic(_WriteBarrier) + +extern "C" void _ReadWriteBarrier(); +# pragma intrinsic(_ReadWriteBarrier) + +extern "C" long _InterlockedExchangeAdd(long volatile* _target, long _value); +# pragma intrinsic(_InterlockedExchangeAdd) + +extern "C" long _InterlockedCompareExchange(long volatile* _target, long _exchange, long _comparand); +# pragma intrinsic(_InterlockedCompareExchange) + +extern "C" void* InterlockedExchangePointer(void volatile* _target, void* _value); +# pragma intrinsic(InterlockedExchangePointer) +#endif // BX_COMPILER_MSVC + namespace bx { inline void readBarrier() @@ -44,7 +68,6 @@ namespace bx _mm_mfence(); #else __sync_synchronize(); -// asm volatile("mfence":::"memory"); #endif // BX_COMPILER }