Using LDP/STP when accessing m_ppc_state lets us load/store two
registers at once. We previously opportunistically used STP, but this
new analysis lets us move loads earlier and move stores later to make
use of LDP/STP in more situations. This reduces code size and time spent
on m_ppc_state accesses, possibly with exceptions when under heavy
register pressure.
This commit adds the new bitsets load_pairs and store_pairs to
BlockRegStats, which indicate which registers should be treated as a
pair when loading and storing to m_ppc_state. The commits after this one
will add code that reads these bitsets to determine when to use LDP/STP.
x64 doesn't have instructions that can load/store a pair of registers,
so the new PPCAnalyst code is ifdef'd for AArch64.
These changes originate from testing the behaviour of the PI registers
in Linux on my Wii.
I started by testing the masks, writing 0xFFFF_FFFF to the registers on
the Wii, and then got told about their value on a GameCube, and then
figured out most of the registers through a discussion with Extrems.
This change was causing some issues:
> Made FMT_STRING a no-op when FMT_USE_CONSTEVAL is enabled, since the consteval format-string constructor already provides compile-time validation (#4611, #4612). Thanks @friedkeenan.
We had some code in VolumeVerifier to catch the error message that
Redump.org used to show when trying to access the Wii datfile without
logging in. This restriction was removed from Redump.org around the
start of 2022, and the code has been unnecessary ever since.
When we added the RetroAchievements integration, we had a discussion
about whether sending version information in the user agent was fine
from a privacy standpoint. We reached the conclusion that it was okay,
but it was conditional on the website having a privacy policy. Neither
incarnation of Redump has that, and Redump also never asked us to send
version information like RetroAchievements did, so let's use a user
agent that just says "Dolphin" when connecting to Redump.
All the staff of Redump (except the absentee sysadmin) have decided to
start a new version of the website at redump.info. It has every disc
from the old site, it has HTTPS, it isn't buckling under the load of AI
scrapers, and moving forward, all adding and verifying of discs is going
to be happening on the new website only. Let's move over.
I've taken the unusual step of updating the translation files manually.
This is because we're very close to a release and because the change is
simple enough that I feel confident about making the change to languages
I don't speak. (I double checked that the Korean translation doesn't
ever follow "Redump.org" by a particle that has a different form
depending on whether there's a final consonant.)
Found out when attempting to make a speed hack to help Dolphin detect an idle loop. The inserted `nop` was preventing it from considering it an idle loop.