<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/Common/Arm64Emitter.h, branch master</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>Jit: Implement error-free transformation for single-precision FMA</title>
<updated>2026-01-18T19:02:49+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2025-08-23T15:03:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=58487f1633b1e00d0ba7091ec96dc7c39afe8617'/>
<id>58487f1633b1e00d0ba7091ec96dc7c39afe8617</id>
<content type='text'>
This implements the equivalent of 07443e2d41 in Jit64 and JitArm64.
Aims to fix https://bugs.dolphin-emu.org/issues/13865.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This implements the equivalent of 07443e2d41 in Jit64 and JitArm64.
Aims to fix https://bugs.dolphin-emu.org/issues/13865.
</pre>
</div>
</content>
</entry>
<entry>
<title>Emitters: Define Trivial Getters Inline</title>
<updated>2024-07-22T04:35:29+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-07-22T04:35:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=ffc7bcfbf81e9c6a005ab1139bc74874d8d4ce35'/>
<id>ffc7bcfbf81e9c6a005ab1139bc74874d8d4ce35</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>JitArm64: Use enum class for LogicalImm size parameter</title>
<updated>2023-12-16T15:48:26+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-12-16T12:27:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=e0eb4ef5bcc3dff262ddf594810c5743e5f2ea73'/>
<id>e0eb4ef5bcc3dff262ddf594810c5743e5f2ea73</id>
<content type='text'>
This should prevent issues like the one fixed in the previous commit
from happening again.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This should prevent issues like the one fixed in the previous commit
from happening again.
</pre>
</div>
</content>
</entry>
<entry>
<title>JitArm64: Add utility for calling a function with arguments</title>
<updated>2023-11-01T18:01:58+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-06-03T07:24:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=c248a6926817dc2523c35d1c2fbb36c2af0c9a44'/>
<id>c248a6926817dc2523c35d1c2fbb36c2af0c9a44</id>
<content type='text'>
With this, situations where multiple arguments need to be moved
from multiple registers become easy to handle, and we also get
compile-time checking that the number of arguments is correct.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With this, situations where multiple arguments need to be moved
from multiple registers become easy to handle, and we also get
compile-time checking that the number of arguments is correct.
</pre>
</div>
</content>
</entry>
<entry>
<title>Arm64Emitter/x64Emitter: Use nodiscard for FixupBranch</title>
<updated>2023-06-18T07:10:20+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-06-18T07:10:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=39a82197673eb2acecb402c0212cea18e1f1a9c3'/>
<id>39a82197673eb2acecb402c0212cea18e1f1a9c3</id>
<content type='text'>
This should prevent future occurrences of the type of problem that was
fixed in b713042.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This should prevent future occurrences of the type of problem that was
fixed in b713042.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix uninitialized variable warnings (C26495)</title>
<updated>2023-02-16T03:18:39+00:00</updated>
<author>
<name>Pokechu22</name>
<email>Pokechu022@gmail.com</email>
</author>
<published>2023-02-16T03:18:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=8802f96b7ed3404fe1162e5e663c70306c7469ac'/>
<id>8802f96b7ed3404fe1162e5e663c70306c7469ac</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Replace BitUtils with C++20: Counting Zeroes</title>
<updated>2022-12-21T10:17:00+00:00</updated>
<author>
<name>Minty-Meeo</name>
<email>45425365+Minty-Meeo@users.noreply.github.com</email>
</author>
<published>2022-10-10T09:03:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=05bebee802c62ff114c53bc9f365f62113c9982e'/>
<id>05bebee802c62ff114c53bc9f365f62113c9982e</id>
<content type='text'>
With the upgrade to C++20, std::countl_zero and std::countr_zero can replace these home-spun implementations from the BitUtil.h library.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With the upgrade to C++20, std::countl_zero and std::countr_zero can replace these home-spun implementations from the BitUtil.h library.
</pre>
</div>
</content>
</entry>
<entry>
<title>Replace BitUtils with C++20: RotateLeft/RotateRight</title>
<updated>2022-12-11T07:59:18+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2022-08-05T13:39:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=454537d53efd0579d4cd2a48108f3bdb490b08d2'/>
<id>454537d53efd0579d4cd2a48108f3bdb490b08d2</id>
<content type='text'>
Now that we've flipped the C++20 switch, let's start making use of
the nice new &lt;bit&gt; header.

I'm planning on handling this move away from BitUtils.h incrementally
in a series of PRs. There may be a few functions remaining in
BitUtils.h by the end that C++20 doesn't have any equivalents for.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now that we've flipped the C++20 switch, let's start making use of
the nice new &lt;bit&gt; header.

I'm planning on handling this move away from BitUtils.h incrementally
in a series of PRs. There may be a few functions remaining in
BitUtils.h by the end that C++20 doesn't have any equivalents for.
</pre>
</div>
</content>
</entry>
<entry>
<title>JitArm64: Implement accurate NaNs</title>
<updated>2022-12-03T18:41:32+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2022-12-03T16:37:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=06e60ac327c223f189103e2ed15e6896f92717e2'/>
<id>06e60ac327c223f189103e2ed15e6896f92717e2</id>
<content type='text'>
For quite some time now, we've had a setting on x86-64 that makes Dolphin
handle NaNs in a more accurate but slower way. There's only one game that
cares about this, Dragon Ball: Revenge of King Piccolo, and what that game
cares about more specifically is that the default NaN (or "generated NaN"
as I believe it's called in PowerPC documentation) is the same as on
PowerPC. On ARM, the default NaN is the same as on PowerPC, so for the
longest time we didn't need to do anything special to get Dragon Ball:
Revenge of King Piccolo working. However, in 93e636a I changed how we
handle FMA instructions in a way that resulted in the sign of NaNs
becoming inverted for nmadd/nmsub instructions, breaking the game.
To fix this, let's implement the AccurateNaNs setting, like on x86-64.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For quite some time now, we've had a setting on x86-64 that makes Dolphin
handle NaNs in a more accurate but slower way. There's only one game that
cares about this, Dragon Ball: Revenge of King Piccolo, and what that game
cares about more specifically is that the default NaN (or "generated NaN"
as I believe it's called in PowerPC documentation) is the same as on
PowerPC. On ARM, the default NaN is the same as on PowerPC, so for the
longest time we didn't need to do anything special to get Dragon Ball:
Revenge of King Piccolo working. However, in 93e636a I changed how we
handle FMA instructions in a way that resulted in the sign of NaNs
becoming inverted for nmadd/nmsub instructions, breaking the game.
To fix this, let's implement the AccurateNaNs setting, like on x86-64.
</pre>
</div>
</content>
</entry>
<entry>
<title>JitArm64: Optimize ps_mergeXX</title>
<updated>2022-11-26T17:14:58+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2022-11-26T16:57:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=f45d3a6a2c80abf866b9228ae8e664e39850d8ce'/>
<id>f45d3a6a2c80abf866b9228ae8e664e39850d8ce</id>
<content type='text'>
1. In some cases, ps_merge01 can be implemented using one instruction.
2. When we need two instructions for ps_merge01, it's best to start with
   a MOV to avoid false dependencies on the destination register.
3. ps_merge10 can be implemented using a single EXT instruction.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
1. In some cases, ps_merge01 can be implemented using one instruction.
2. When we need two instructions for ps_merge01, it's best to start with
   a MOV to avoid false dependencies on the destination register.
3. ps_merge10 can be implemented using a single EXT instruction.
</pre>
</div>
</content>
</entry>
</feed>
