<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.lumasworkshop.com/w/index.php?action=history&amp;feed=atom&amp;title=Paired_Singles</id>
	<title>Paired Singles - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.lumasworkshop.com/w/index.php?action=history&amp;feed=atom&amp;title=Paired_Singles"/>
	<link rel="alternate" type="text/html" href="https://www.lumasworkshop.com/w/index.php?title=Paired_Singles&amp;action=history"/>
	<updated>2026-06-04T06:20:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://www.lumasworkshop.com/w/index.php?title=Paired_Singles&amp;diff=831&amp;oldid=prev</id>
		<title>Shibboleet: Created page with &quot;&#039;&#039;Paired Singles&#039;&#039; are a part of the Broadway / Gekko processor that allows for two single-precision floating point values to be stored in a single register. This allows for faster vector and matrix math. &#039;&#039;Paired Singles&#039;&#039; are handwritten assembly code; they cannot be generated by the compiler &#039;&#039;&#039;unless&#039;&#039;&#039; it is for pushing / popping the stack frame in a functions prologue or epilogue. The &#039;&#039;Super Mario Galaxy&#039;&#039; games do not use very many different paired single instruc...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.lumasworkshop.com/w/index.php?title=Paired_Singles&amp;diff=831&amp;oldid=prev"/>
		<updated>2025-02-16T23:16:21Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;Paired Singles&amp;#039;&amp;#039; are a part of the Broadway / Gekko processor that allows for two single-precision floating point values to be stored in a single register. This allows for faster vector and matrix math. &amp;#039;&amp;#039;Paired Singles&amp;#039;&amp;#039; are handwritten assembly code; they cannot be generated by the compiler &amp;#039;&amp;#039;&amp;#039;unless&amp;#039;&amp;#039;&amp;#039; it is for pushing / popping the stack frame in a functions prologue or epilogue. The &amp;#039;&amp;#039;Super Mario Galaxy&amp;#039;&amp;#039; games do not use very many different paired single instruc...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;Paired Singles&amp;#039;&amp;#039; are a part of the Broadway / Gekko processor that allows for two single-precision floating point values to be stored in a single register. This allows for faster vector and matrix math. &amp;#039;&amp;#039;Paired Singles&amp;#039;&amp;#039; are handwritten assembly code; they cannot be generated by the compiler &amp;#039;&amp;#039;&amp;#039;unless&amp;#039;&amp;#039;&amp;#039; it is for pushing / popping the stack frame in a functions prologue or epilogue. The &amp;#039;&amp;#039;Super Mario Galaxy&amp;#039;&amp;#039; games do not use very many different paired single instructions, so this page only covers the ones used by the game.&lt;br /&gt;
&lt;br /&gt;
== Loading And Storing ==&lt;br /&gt;
=== psq_l ===&lt;br /&gt;
Loads a paired single into the destination register &amp;#039;&amp;#039;&amp;#039;FRD&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
psq_l FRD, D(RA), W, I&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| FRD|| Destination register for the paired single loaded.&lt;br /&gt;
|-&lt;br /&gt;
| D(RA)|| Memory address, where &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039; is the offset, and &amp;#039;&amp;#039;&amp;#039;RA&amp;#039;&amp;#039;&amp;#039; is the source register.&lt;br /&gt;
|-&lt;br /&gt;
| W || Size of the paired single. &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; loads the first two floats where &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; only loads the third.&lt;br /&gt;
|-&lt;br /&gt;
| I || Determines the type of register to load from. Only used as &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; (floating point).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Math ==&lt;br /&gt;
=== ps_madd ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps_madd FRT, FRA, FRB, FRC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\text{FRT}_{\text{high}} = (\text{FRA}_{\text{high}} \times \text{FRB}_{\text{high}}) + \text{FRC}_{\text{high}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\text{FRT}_{\text{low}} = (\text{FRA}_{\text{low}} \times \text{FRB}_{\text{low}}) + \text{FRC}_{\text{low}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Shibboleet</name></author>
	</entry>
</feed>