mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-07-10 01:54:46 -06:00
JIT/AArch64: advertise +i8mm to the LLVM target machine
The PPU/SPU recompilers emit i8mm intrinsics (ummla/smmla, used by the SPU GBB/GBH gather paths) gated on utils::has_i8mm(). The JIT's MAttrs list mirrored dotprod/sha3/sve from HWCAP but never added i8mm, and the resolved -mcpu on Apple silicon is the cortex-a78 fallback (no i8mm), so the backend aborted with "Cannot select: intrinsic %llvm.aarch64.neon.ummla" on every game. Mirror i8mm into MAttrs like the other features. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> (cherry picked from commit 52d121fee79cc569c9ac273852edd0e493ae51fc)
This commit is contained in:
parent
62d32ab45e
commit
d25972e196
@ -750,6 +750,15 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
|
||||
else
|
||||
attributes.push_back("-dotprod");
|
||||
|
||||
// The recompilers emit i8mm intrinsics (e.g. ummla) gated on utils::has_i8mm().
|
||||
// The JIT target features must advertise i8mm too, otherwise the backend fails
|
||||
// with "Cannot select: intrinsic %llvm.aarch64.neon.ummla" whenever the resolved
|
||||
// -mcpu does not already imply it (e.g. the cortex-a78 fallback on Apple silicon).
|
||||
if (utils::has_i8mm())
|
||||
attributes.push_back("+i8mm");
|
||||
else
|
||||
attributes.push_back("-i8mm");
|
||||
|
||||
if (utils::has_sve())
|
||||
attributes.push_back("+sve");
|
||||
else
|
||||
|
||||
Loading…
Reference in New Issue
Block a user