Misc: Fix ARM32 build (again)

This commit is contained in:
Stenzek
2024-08-14 17:00:43 +10:00
parent 460acce561
commit 2e2451998c
9 changed files with 558 additions and 85 deletions

View File

@ -66,8 +66,10 @@ ALWAYS_INLINE_RELEASE static void MemsetPtrs(T* ptr, T value, u32 count)
#if defined(CPU_ARCH_SSE)
const __m128i svalue = _mm_set1_epi64x(reinterpret_cast<intptr_t>(value));
#elif defined(CPU_ARCH_NEON)
#elif defined(CPU_ARCH_NEON) && defined(CPU_ARCH_ARM64)
const uint64x2_t svalue = vdupq_n_u64(reinterpret_cast<uintptr_t>(value));
#elif defined(CPU_ARCH_NEON) && defined(CPU_ARCH_ARM32)
const uint32x4_t svalue = vdupq_n_u32(reinterpret_cast<uintptr_t>(value));
#endif
// Clang gets way too eager and tries to unroll these, emitting thousands of instructions.
@ -78,8 +80,10 @@ ALWAYS_INLINE_RELEASE static void MemsetPtrs(T* ptr, T value, u32 count)
{
#if defined(CPU_ARCH_SSE)
_mm_store_si128(reinterpret_cast<__m128i*>(dest), svalue);
#elif defined(CPU_ARCH_NEON)
#elif defined(CPU_ARCH_NEON) && defined(CPU_ARCH_ARM64)
vst1q_u64(reinterpret_cast<u64*>(dest), svalue);
#elif defined(CPU_ARCH_NEON) && defined(CPU_ARCH_ARM32)
vst1q_u32(reinterpret_cast<u32*>(dest), svalue);
#endif
dest += PTRS_PER_VECTOR;
}