82 Commits
Author SHA1 Message Date
Brian DegenhardtandClaude Opus 4.8 8aba55e4e9 emitter/arm64: fix Windows-arm64 link error on x86Emitter::rbx
VMManager.cpp (compiled on every target) includes x86emitter.h, which
pulls in x86types.h. That header binds `RTEXTPTR` as a reference to the
x86 register `rbx`:

    static constexpr const xAddressReg& RTEXTPTR = rbx;

`rbx` is defined only in x86emitter.cpp, which CMake compiles solely
under ARCH_X86. Binding the reference ODR-uses `rbx`, so on ARM64 it
needs a definition that does not exist. clang (macOS/Linux arm64) dead-
code-eliminates the unused reference and links fine, but MSVC keeps it,
so the Windows-arm64 link failed:

    VMManager.cpp.obj : error LNK2001: unresolved external symbol
      "class x86Emitter::xAddressReg const x86Emitter::rbx"
    pcsx2-qt.exe : fatal error LNK1120: 1 unresolved externals

RTEXTPTR is an x86 concept (the program-text pointer register) and every
real user lives in pcsx2/x86/** or common/emitter/*.cpp, all ARCH_X86-
only and never built on arm64. Gate the alias to _M_X86 so it simply
doesn't exist on arm64 -- no behavior change on x86, and the spurious
rbx reference disappears on Windows arm64.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 21:22:20 -07:00
SternXD 7978370b39 Common/Emitter: Inline _xMovRtoR into xImpl_Mov operator
Signed-off-by: SternXD <stern@sidestore.io>
2026-06-13 09:34:53 -04:00
TellowKrinkle 5c205d6287 EE:Rec: Allow rec memory anywhere 2026-03-28 17:49:17 -04:00
TheLastRar b37d5754eb Common: Inline emitter header functions 2026-02-28 07:55:42 -05:00
SternXD d983b2b066 Copyright: Change year from 2002-2025 to 2002-2026 2026-01-15 00:22:32 +01:00
oltolm 0da84c2c69 Misc: use concepts instead of SFINAE 2026-01-13 19:41:05 -05:00
TellowKrinkle 4662d0e5dc Common: Disable and remove ALWAYS_USE_MOVAPS
In AVX, MOVAPS is the same size as all the other instructions.

In Nehalem (one of the main targets of SSE4), there are bypass penalties for using the wrong mov.
2025-08-24 20:16:24 -05:00
TellowKrinkle cc5f594384 Common: Remove dedicated AVX instructions
The main instructions *are* AVX instructions now
2025-08-24 20:16:24 -05:00
TellowKrinkle d9ff9d7aa1 Common: Remove old SIMD helpers 2025-08-24 20:16:24 -05:00
TellowKrinkle 08b9037781 Common: Switch g1 and g3 SIMD to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle e5ba376985 Common: Use inheritance for group 1/3 ops 2025-08-24 20:16:24 -05:00
TellowKrinkle 165595008e Common: Remove xImpl_G1Compare
We already have SIMD compare under xCMPXXX.PS
2025-08-24 20:16:24 -05:00
TellowKrinkle 8dc905e827 Common: Switch movmsk to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle 7cc8e5887f Common: Switch movnt to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle 3599438e57 Common: Switch movss/d to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle 88515d58ab Common: Switch movd/q to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle 338e1a71a9 Common: Switch movsl/hdup to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle d9fc763f82 Common: Switch pmovzx/sx to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle 7eeb6c7aca Common: Switch blend to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle a045c917e7 Common: Switch simd mov to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle a052a43b84 Common: Switch movh/lps to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle 94d87a35be Common: Switch pack/unpack instructions to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle 0c8c798051 Common: Switch integer shuffle/insert/extract instructions to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle c9ddab444a Common: Switch fp shuffle/insert/extract instructions to auto SSE/AVX 2025-08-24 20:16:24 -05:00
TellowKrinkle 1222270e44 Common: Switch simd integer bitwise instructions to auto SSE/AVX 2025-08-24 20:16:24 -05:00