summaryrefslogtreecommitdiff
path: root/indra/llcommon/llmemory.h
diff options
context:
space:
mode:
authorRye <rye@lindenlab.com>2025-02-10 14:08:56 -0500
committerRye <rye@lindenlab.com>2025-02-11 05:04:10 -0500
commit4ab2a80e6c8ab6c183143fbbca2c3386088caeb6 (patch)
tree2245da9ab8791495a4dc9048b046cd1b25d13382 /indra/llcommon/llmemory.h
parent9fef2a114ea7eb6c42dd29e94ba5dc3451eb4560 (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.h8
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__