<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/Common/Arm64Emitter.cpp, branch release-prep-2503a</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<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>Arm64FloatEmitter: 64-Bit Assert In ABI_PushRegisters</title>
<updated>2024-05-07T20:51:50+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-05-05T21:26:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=28f8ab9e8a9593fb05ddc93a3022ee8c6e305292'/>
<id>28f8ab9e8a9593fb05ddc93a3022ee8c6e305292</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Replace Common::BitCast with std::bit_cast</title>
<updated>2024-05-04T01:43:51+00:00</updated>
<author>
<name>Pokechu22</name>
<email>Pokechu022@gmail.com</email>
</author>
<published>2022-08-06T04:10:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=fbbfea8e8e536800a6a911eb90cecdd1f343f9e3'/>
<id>fbbfea8e8e536800a6a911eb90cecdd1f343f9e3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Arm64Emitter: Fix shadowed variable</title>
<updated>2024-04-21T14:20:59+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2024-04-21T14:20:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=de338317834f08590d59df5c27392f109322d29f'/>
<id>de338317834f08590d59df5c27392f109322d29f</id>
<content type='text'>
A lambda at the end of ARM64XEmitter::ParallelMoves named its parameter
`move`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A lambda at the end of ARM64XEmitter::ParallelMoves named its parameter
`move`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Arm64Emitter: Fix incorrect assert category</title>
<updated>2024-04-21T14:19:10+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2024-04-21T14:19:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=e140491fa9108f3b456bd108a2f5a707458868da'/>
<id>e140491fa9108f3b456bd108a2f5a707458868da</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Arm64Emitter: Don't optimize ADD to MOV for SP</title>
<updated>2024-02-06T20:58:07+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2024-02-06T20:58:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=b5c5371848084f6b8738c3be85267c2cd2c9fbc2'/>
<id>b5c5371848084f6b8738c3be85267c2cd2c9fbc2</id>
<content type='text'>
Unlike ADD (immediate), MOV (register) treats SP as ZR. Therefore the
ADDI2R optimization that was added in 67791d227c can't optimize ADD to
MOV when exactly one of the registers is SP.

There currently isn't any code in Dolphin that calls ADDI2R with
parameters that would trigger this case.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Unlike ADD (immediate), MOV (register) treats SP as ZR. Therefore the
ADDI2R optimization that was added in 67791d227c can't optimize ADD to
MOV when exactly one of the registers is SP.

There currently isn't any code in Dolphin that calls ADDI2R with
parameters that would trigger this case.
</pre>
</div>
</content>
</entry>
<entry>
<title>JitArm64: Fix the "do nothing" cases of ANDI2R and friends</title>
<updated>2023-12-21T19:51:32+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-12-21T19:51:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=d8c78f2a922623aa03875bd496113bc42622e34d'/>
<id>d8c78f2a922623aa03875bd496113bc42622e34d</id>
<content type='text'>
So somehow I forgot that AArch64 uses three-operand encoding...

Fixes a regression from 6303416201 which manifested in various ways,
such as incorrect rendering of the Wind Waker title screen.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
So somehow I forgot that AArch64 uses three-operand encoding...

Fixes a regression from 6303416201 which manifested in various ways,
such as incorrect rendering of the Wind Waker title screen.
</pre>
</div>
</content>
</entry>
<entry>
<title>JitArm64: Improve codegen in ANDI2R and friends</title>
<updated>2023-12-17T17:13:32+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-12-17T16:51:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=dc60bc5f1ef19fc92b2dd9c92655bf5f282106dd'/>
<id>dc60bc5f1ef19fc92b2dd9c92655bf5f282106dd</id>
<content type='text'>
The codegen for the functions themselves, not for the emitted code.

This seems to save 32 bytes per function. We also get rid of the oddity
we had before where ANDI2R would do masking for 32-bit operations but
the other functions wouldn't.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The codegen for the functions themselves, not for the emitted code.

This seems to save 32 bytes per function. We also get rid of the oddity
we had before where ANDI2R would do masking for 32-bit operations but
the other functions wouldn't.
</pre>
</div>
</content>
</entry>
<entry>
<title>JitArm64: Optimize additional cases of ANDI2R and friends</title>
<updated>2023-12-17T17:13:32+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-12-17T16:24:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=a8e1e1ae48d0c03f60c3fc7cd13856b92590efc8'/>
<id>a8e1e1ae48d0c03f60c3fc7cd13856b92590efc8</id>
<content type='text'>
Now we'll never need a scratch register for values that are all zeroes
or all ones.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now we'll never need a scratch register for values that are all zeroes
or all ones.
</pre>
</div>
</content>
</entry>
<entry>
<title>JitArm64: Optimize ANDI2R and friends to no-ops when possible</title>
<updated>2023-12-17T17:13:30+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-12-17T16:15:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=630341620128684cb7965a0245d0e5f51af7ed45'/>
<id>630341620128684cb7965a0245d0e5f51af7ed45</id>
<content type='text'>
This optimizes rlwnmx with mask == 0xFFFFFFFF.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This optimizes rlwnmx with mask == 0xFFFFFFFF.
</pre>
</div>
</content>
</entry>
</feed>
