diff --git a/rpcs3/buildfiles/cmake/ConfigureCompiler.cmake b/rpcs3/buildfiles/cmake/ConfigureCompiler.cmake index 172ba9545..d108c22ad 100644 --- a/rpcs3/buildfiles/cmake/ConfigureCompiler.cmake +++ b/rpcs3/buildfiles/cmake/ConfigureCompiler.cmake @@ -40,7 +40,7 @@ else() # Note that compared to the rest of the 8.x family, 8.1 is very restrictive and we'll have to bump the requirement in future to get anything meaningful. if (APPLE) add_compile_options(-march=armv8.4-a) - else() + elseif(NOT ANDROID) add_compile_options(-march=armv8.1-a) endif() elseif(COMPILER_X86) diff --git a/rpcs3/rpcs3/util/asm.hpp b/rpcs3/rpcs3/util/asm.hpp index 947aa4f54..22850201b 100644 --- a/rpcs3/rpcs3/util/asm.hpp +++ b/rpcs3/rpcs3/util/asm.hpp @@ -445,7 +445,7 @@ namespace utils { #if defined(ARCH_X64) && !defined(_MSC_VER) __asm__ volatile("lock orl $0, 0(%0)" :: "r" (ptr)); -#elif defined(ARCH_ARM64) +#elif defined(ARCH_ARM64) && !defined(ANDROID) u32 value = 0; u32* u32_ptr = static_cast(ptr); __asm__ volatile("ldset %w0, %w0, %1" : "+r"(value), "=Q"(*u32_ptr) : "r"(value)); diff --git a/rpcs3/rpcs3/util/simd.hpp b/rpcs3/rpcs3/util/simd.hpp index ff4e0eed7..eedcfb787 100644 --- a/rpcs3/rpcs3/util/simd.hpp +++ b/rpcs3/rpcs3/util/simd.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Utilities/StrFmt.h" #include "util/types.hpp" #include "util/v128.hpp" #include "util/sysinfo.hpp" @@ -1881,7 +1882,12 @@ inline v128 gv_muladdfs(const v128& a, const v128& b, const v128& c) inline v128 gv_rmuladds_hds16(const v128& a, const v128& b, const v128& c) { #if defined(ARCH_ARM64) +#if defined(ANDROID) + // This function used in optimized PPU interpreter only, we do not use interperters in android + return a; +#else return vqrdmlahq_s16(c, a, b); +#endif #elif defined(ARCH_X64) const auto x80 = _mm_set1_epi16(0x80); // 0x80 * 0x80 = 0x4000, add this to the product const auto al = _mm_unpacklo_epi16(a, x80);