diff options
| author | Rye <rye@lindenlab.com> | 2025-02-10 14:08:56 -0500 |
|---|---|---|
| committer | Rye <rye@lindenlab.com> | 2025-02-11 05:04:10 -0500 |
| commit | 4ab2a80e6c8ab6c183143fbbca2c3386088caeb6 (patch) | |
| tree | 2245da9ab8791495a4dc9048b046cd1b25d13382 /indra/llcommon/llmemory.h | |
| parent | 9fef2a114ea7eb6c42dd29e94ba5dc3451eb4560 (diff) | |
Use SSE2NEON to emulate SSE intrinsics when building against an ARM target
Diffstat (limited to 'indra/llcommon/llmemory.h')
| -rw-r--r-- | indra/llcommon/llmemory.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index 72aec57080..adc556d180 100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -71,7 +71,11 @@ LL_COMMON_API void ll_assert_aligned_func(uintptr_t ptr,U32 alignment); #define ll_assert_aligned(ptr,alignment) #endif +#if LL_ARM64 +#include "sse2neon.h" +#else #include <xmmintrin.h> +#endif template <typename T> T* LL_NEXT_ALIGNED_ADDRESS(T* address) { @@ -339,6 +343,9 @@ LL_FORCE_INLINE void ll_aligned_free(void* ptr) inline void ll_memcpy_nonaliased_aligned_16(char* __restrict dst, const char* __restrict src, size_t bytes) { LL_PROFILE_ZONE_SCOPED_CATEGORY_MEMORY; +#if defined(LL_ARM64) + memcpy(dst, src, bytes); +#else assert(src != NULL); assert(dst != NULL); assert(bytes > 0); @@ -404,6 +411,7 @@ inline void ll_memcpy_nonaliased_aligned_16(char* __restrict dst, const char* __ dst += 16; src += 16; } +#endif } #ifndef __DEBUG_PRIVATE_MEM__ |
