<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/Common/Arm64Emitter.h, branch stable</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>Common: CallLambdaTrampoline can return a value</title>
<updated>2015-07-04T12:32:26+00:00</updated>
<author>
<name>Jeffrey Pfau</name>
<email>jeffrey@endrift.com</email>
</author>
<published>2015-07-04T05:27:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=bd196e8c71853ef83a47156117efc2ad581f4b38'/>
<id>bd196e8c71853ef83a47156117efc2ad581f4b38</id>
<content type='text'>
As it is currently written, CallLambdaTrampoline does not return a
value. However, some of the functions that are being wrapped may
return a value that the JIT is expected to understand. A compiler
*cough cough clang* may opt to alter %rax after the wrapped lambda
returns, e.g. popping a previous value, which can clobber the
return value. If we actually have a return value, then the compiler
must not clobber it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As it is currently written, CallLambdaTrampoline does not return a
value. However, some of the functions that are being wrapped may
return a value that the JIT is expected to understand. A compiler
*cough cough clang* may opt to alter %rax after the wrapped lambda
returns, e.g. popping a previous value, which can clobber the
return value. If we actually have a return value, then the compiler
must not clobber it.
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Add ASIMD LDR/STR with register offset</title>
<updated>2015-06-08T00:53:05+00:00</updated>
<author>
<name>Ryan Houdek</name>
<email>Sonicadvance1@gmail.com</email>
</author>
<published>2015-06-08T00:53:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=8ae12d80053c4b69d0f8a3af470b6f0d0d8d1893'/>
<id>8ae12d80053c4b69d0f8a3af470b6f0d0d8d1893</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Upstream PPSSPP's emitter changes.</title>
<updated>2015-06-08T00:50:21+00:00</updated>
<author>
<name>Ryan Houdek</name>
<email>Sonicadvance1@gmail.com</email>
</author>
<published>2015-06-07T21:57:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=05b72c5d31f8c3b04744e62626594847ab1d68c2'/>
<id>05b72c5d31f8c3b04744e62626594847ab1d68c2</id>
<content type='text'>
Requires a minor change to in the JIT to make sure everything still works.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Requires a minor change to in the JIT to make sure everything still works.
</pre>
</div>
</content>
</entry>
<entry>
<title>Arm64Emitter: Make GetReg() const</title>
<updated>2015-06-05T00:43:22+00:00</updated>
<author>
<name>Lioncash</name>
<email>mathew1800@gmail.com</email>
</author>
<published>2015-06-05T00:43:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=4f276ede0f6f4682a3d956d04c0d1db73fb43c58'/>
<id>4f276ede0f6f4682a3d956d04c0d1db73fb43c58</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Set copyright year to when a file was created</title>
<updated>2015-05-25T11:22:31+00:00</updated>
<author>
<name>Tillmann Karras</name>
<email>tilkax@gmail.com</email>
</author>
<published>2015-05-24T04:55:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=30ebb2459eb97ba544547183854775df8460b475'/>
<id>30ebb2459eb97ba544547183854775df8460b475</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update license headers to GPLv2+</title>
<updated>2015-05-25T11:22:31+00:00</updated>
<author>
<name>Tillmann Karras</name>
<email>tilkax@gmail.com</email>
</author>
<published>2015-05-17T23:08:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=cefcb0ace9d363b3679b4e93bcc9ec05f1e5f4f8'/>
<id>cefcb0ace9d363b3679b4e93bcc9ec05f1e5f4f8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Stop violating the AAPCS64 so much.</title>
<updated>2015-03-02T17:21:15+00:00</updated>
<author>
<name>Ryan Houdek</name>
<email>Sonicadvance1@gmail.com</email>
</author>
<published>2015-03-02T17:21:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=f1a9db9bdc13e0e706018ed44c0c731c0d076b2a'/>
<id>f1a9db9bdc13e0e706018ed44c0c731c0d076b2a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Implement VFP loadstore paired in the emitter.</title>
<updated>2015-03-02T12:27:17+00:00</updated>
<author>
<name>Ryan Houdek</name>
<email>Sonicadvance1@gmail.com</email>
</author>
<published>2015-03-02T09:41:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=39e357d62d4a0cf936d3a1cdd7ff306d168cc57d'/>
<id>39e357d62d4a0cf936d3a1cdd7ff306d168cc57d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Optimize FPR pushing and popping.</title>
<updated>2015-03-02T12:27:13+00:00</updated>
<author>
<name>Ryan Houdek</name>
<email>Sonicadvance1@gmail.com</email>
</author>
<published>2015-02-28T10:39:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=8b8310d28cd589fb371f425383c756699766c3a1'/>
<id>8b8310d28cd589fb371f425383c756699766c3a1</id>
<content type='text'>
Previously on FPR pushing and popping we would do a single STR/LDR per quad FPR we wanted to push/pop.
In most of our cases when we are pushing and popping VFP registers they will be consecutive registers that will save more efficiently using the NEON
loadstores that can do up to four quad registers.
So this can potentially cutting instructions down to ~1/4th the amount of instructions if the registers are all consecutive.

On the Cortex-A57 this is basically just an icache improvement, but on the Nvidia Denver this may be optimized to be more efficient. Either way it's a
win.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously on FPR pushing and popping we would do a single STR/LDR per quad FPR we wanted to push/pop.
In most of our cases when we are pushing and popping VFP registers they will be consecutive registers that will save more efficiently using the NEON
loadstores that can do up to four quad registers.
So this can potentially cutting instructions down to ~1/4th the amount of instructions if the registers are all consecutive.

On the Cortex-A57 this is basically just an icache improvement, but on the Nvidia Denver this may be optimized to be more efficient. Either way it's a
win.
</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Implement loadstore unscaled.</title>
<updated>2015-02-17T04:00:43+00:00</updated>
<author>
<name>Ryan Houdek</name>
<email>Sonicadvance1@gmail.com</email>
</author>
<published>2015-02-17T04:00:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=120df4c68883065235e21c69f33ee47ffbcf2a8f'/>
<id>120df4c68883065235e21c69f33ee47ffbcf2a8f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
