<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: james hurley</title>
    <description>The latest articles on DEV Community by james hurley (@jamesgh).</description>
    <link>https://dev.to/jamesgh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4132167%2F7febea4c-4703-49be-99cd-85792e4ca8f7.jpg</url>
      <title>DEV Community: james hurley</title>
      <link>https://dev.to/jamesgh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jamesgh"/>
    <language>en</language>
    <item>
      <title>Alignment Delay is Everywhere</title>
      <dc:creator>james hurley</dc:creator>
      <pubDate>Fri, 30 Oct 2026 17:54:35 +0000</pubDate>
      <link>https://dev.to/jamesgh/alignment-delay-is-everywhere-50e6</link>
      <guid>https://dev.to/jamesgh/alignment-delay-is-everywhere-50e6</guid>
      <description>&lt;h2&gt;
  
  
  if you have eyes to see
&lt;/h2&gt;

&lt;p&gt;I've run into this one from time to time throughout my career. You're measuring end to end latency of a system and it's way higher than expected.. and then it's pretty close to what you expected... and then it's somewhere in between...&lt;/p&gt;

&lt;p&gt;But there's no load on the system. You're testing locally. You're on a really stable connection. You're the only user. Why is this happening? And then you increase the camera's frame rate and you notice the latencies decrease roughly proportionally to the frame rate's increase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3cy1xfkqyyq5n85ytfy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3cy1xfkqyyq5n85ytfy.png" alt="Chart showing sampled request latencies over a set of frame rates between 5 and 30fps" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oh yeah, the inputs are waiting for the next frame from the camera.&lt;/p&gt;

&lt;p&gt;Alignment delay (or sampling latency or quantization delay) happens all the time and is easy to miss when looking at overall system latency. Any time async events get quantized onto a periodic boundary you're likely to encounter this. This could be commands being mapped to frames, or cache TTL boundaries, or video players polling for playlist updates, or Vsync. You will end up with somewhere between 0 and T (where T is the period length) extra latency, and T/2 on average.&lt;/p&gt;

&lt;p&gt;Alignment delays can also be additive in a system. If you have multiple parts of the system that quantize to a periodic boundary you can add ∑T_i/2 average latency to the system, if the periodic phases are independent. Let's say we have a simple live video system that adds timed metadata to the headers of video segments that are 2 seconds long, and we have players polling for new segments at that same rate but with their own phase. In this case, excluding other sources of latency, our timed metadata messages will take on average 2 seconds to be received by players with a worst case of 4 seconds. The metadata packet arrives and then must wait up to 2 seconds to be consumed by the segmenter, then the segment that was produced has to wait up to 2 seconds to be downloaded by a player. Sometimes we'll get lucky and latency will be very low, but on average we'll have 2 seconds of additional latency overall, one second for each boundary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F81w3cao1f3bbdm1b13es.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F81w3cao1f3bbdm1b13es.png" alt="Chart showing request latencies by how far into a camera’s capture phase the request is made" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In cases where the periodic boundary is more than one event you can end up with a higher latency floor if the things that bound the period are not in phase. In the chart above we are looking at a real inference system running Fast-WAM. The inputs in this case are two camera frames and a command. The latency is measured from a command being sent to a response being received. On the left you can see that with the cameras aligned we are able to reproduce the full range of possible latencies by delaying commands. On the right our cameras that are running at 10fps are 50ms out of phase. Since a submitted command has to wait for the next two frames the minimum latency added is 50ms while the maximum remains 100ms for commands sent immediately after a frame is captured. In these cases instead of the latency range being [0,T] they are [Δφ, T] where Δφ represents the phase offset.&lt;/p&gt;

&lt;p&gt;Detecting alignment delay can be challenging if you haven't instrumented your system with it in mind. You can look at arrival times of events and measure how long it takes for them to move through milestones. For example you can look at the difference between the time processing started on an event and the time it initially arrived. If you're aware of periodicity in your system you can look out for things that are delayed by an average of T/2 (or somewhere nearby). You can also add up the latencies you are measuring directly (e.g. encoder time, packager time, inference time, etc.) and look for delay that is not accounted for in these measurements.&lt;/p&gt;

&lt;p&gt;Addressing alignment delay in your system is going to depend a lot on the requirements of the system. In some cases this sort of delay is entirely optional and self imposed. Does the timed metadata packet really need to be inserted at the start of a segment, or can it be inserted at any point in the segment’s lifecycle? The player polling is less optional. You don’t want players spamming your service with many needless requests. You could move the timed metadata to an out of band push channel, but that makes the “timed” part harder. Maybe you add a timestamp that lets players migrate to be more in phase with the system. If you are aligning things at frame boundaries on a server maybe you make it easier for commands to be synchronized with frames at the client.&lt;/p&gt;

&lt;p&gt;In any case this is, for people working in domains like video systems, a source of latency that you will encounter from time to time and having it mind when building systems can help you keep unexpected latencies in check.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>architecture</category>
      <category>performance</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Blazar Video Encoder for Generative Video</title>
      <dc:creator>james hurley</dc:creator>
      <pubDate>Thu, 29 Oct 2026 06:31:49 +0000</pubDate>
      <link>https://dev.to/jamesgh/blazar-video-encoder-for-generative-video-1b15</link>
      <guid>https://dev.to/jamesgh/blazar-video-encoder-for-generative-video-1b15</guid>
      <description>&lt;p&gt;Lately I've been using video diffusion models and learning more about them. As I was digging around the various codebases I noticed that there were a couple of common approaches to actually encoding the frames that are generated by the diffusion models: mainly use PyAV or shell out to FFmpeg. There's nothing especially &lt;em&gt;wrong&lt;/em&gt; with either of these approaches but I think it is possible for us to do a little better. So I (along with my robot friends) built Blazar. You can find the code repo for Blazar &lt;a href="https://github.com/blazar-video/blazar" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Today with PyAV the flow is roughly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Convert tensor from BF16 or F32 to u8 and reshape to &lt;code&gt;(H, W, C)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;D2H transfer&lt;/li&gt;
&lt;li&gt;RGB to YUV conversion&lt;/li&gt;
&lt;li&gt;(if NVENC) upload to the GPU&lt;/li&gt;
&lt;li&gt;Encode&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, I think, this is roughly what we want to do:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Be able to take the native output tensor shape of the model as an input. &lt;code&gt;(B, C, T, H, W)&lt;/code&gt; seems to be the common tensor shape but a video encoder will want more like &lt;code&gt;(B, T, H, W, C)&lt;/code&gt; or &lt;code&gt;(B, T, C, H, W)&lt;/code&gt; (or whatever nv12 is with U' and V' interleaved)&lt;/li&gt;
&lt;li&gt;Do a fused YUV + tensor reshape conversion (does that count as a reshape? maybe not) either on GPU or CPU&lt;/li&gt;
&lt;li&gt;Encode either using NVENC (or some other HW encoder) or a variety of software encoders&lt;/li&gt;
&lt;li&gt;Be relatively easily configurable...&lt;/li&gt;
&lt;li&gt;Probably don't get in the way of the Python GIL&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the robot and I landed on a design where most of the work happens in Rust. Backends for YUV conversion and encoding are swappable between hardware and software so that if you would prefer not to use HW for YUV conversion and encoding you don't have to do that. There is a concept of "Calibrations" that are keyed on model and target quality so you can have multiple calibrations with different latency or quality targets and make them configurable by model. These live in human readable TOML files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;blazar&lt;/span&gt;

&lt;span class="n"&gt;cals&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;blazar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Calibrations&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;calibrations/default&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;blazar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Encoder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;calibrations&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cals&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;identity&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;family&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wan&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;version&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                                 &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;quant&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bf16&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;size&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1.3b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                    &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;balanced&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;backend&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;nvenc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;codec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;h264&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;out.mp4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;submit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;W&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;H&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;24.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;layout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thwc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unit01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# or, with device tensors:
&lt;/span&gt;    &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;submit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tensor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;24.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unit01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's a pretty simple example of using Blazar to encode frames. You can submit them one at a time or as a chunk of video, in which case they'll be mass converted to YUV and then encoded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Peformance Comparison
&lt;/h2&gt;

&lt;p&gt;This comparison table was done on a Core i7 14700KF with a 4080 Super in WSL. What we are measuring here is a BF16 (1, 3, 121, 1088, 1920) tensor being passed into the encoder pipelines for these scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Blazar device bf16 (BF16 input tensor, GPU YUV conversion, NVENC)&lt;/li&gt;
&lt;li&gt;Blazar device u8 -&amp;gt; CPU YUV Conversion -&amp;gt; NVENC&lt;/li&gt;
&lt;li&gt;PyAV device u8 -&amp;gt; CPU YUV Conversion -&amp;gt; NVENC&lt;/li&gt;
&lt;li&gt;FFmpeg device u8 -&amp;gt; IPC -&amp;gt; CPU YUV Conversion -&amp;gt; NVENC&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;FFmpeg CLI is a bit of a strange one but I did see this happening out in some projects so I wanted to include it for that reason.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;What it does from the device tensor&lt;/th&gt;
&lt;th&gt;720p&lt;/th&gt;
&lt;th&gt;1088p&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;blazar, device tensor&lt;/td&gt;
&lt;td&gt;kernel writes NV12 into the surface NVENC reads&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;1.10 ms&lt;/strong&gt; (909 fps)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;2.20 ms&lt;/strong&gt; (455 fps)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;blazar, host path&lt;/td&gt;
&lt;td&gt;quantise → copy to host → CPU convert → upload NV12&lt;/td&gt;
&lt;td&gt;3.54 ms (282 fps)&lt;/td&gt;
&lt;td&gt;5.37 ms (186 fps)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyAV&lt;/td&gt;
&lt;td&gt;quantise → copy to host → swscale → encode&lt;/td&gt;
&lt;td&gt;2.73 ms (367 fps)&lt;/td&gt;
&lt;td&gt;8.60 ms (116 fps)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ffmpeg CLI&lt;/td&gt;
&lt;td&gt;quantise → copy to host → pipe raw → swscale → encode&lt;/td&gt;
&lt;td&gt;not measured&lt;/td&gt;
&lt;td&gt;8.24 ms (121 fps)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The optimal path is the device bf16 path. Here we feed the tensor directly into a CUDA kernel that simultaneously converts from RGB to YUV and reformats the buffer into the shape NVENC expects (T,C,H,W). On my 4080 Super we're able to hit 455 fps with 1088p tensors from SGLang. If we copy to host as a u8 that drops to 186 fps. Compared to the PyAV or FFmpeg CLI paths this is a fair improvement still. At smaller resolutions swscale outperforms the Blazar YUV conversion, but Blazar's YUV conversion seems to amortize better over larger frames. I expected the performance in this case would be close to PyAV's performance - but obviously there are YUV conversion implementation differences. Something to look more deeply at.&lt;/p&gt;

&lt;h3&gt;
  
  
  GIL Impact
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;fps beside a Python thread&lt;/th&gt;
&lt;th&gt;Python loop keeps&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;blazar, device tensor&lt;/td&gt;
&lt;td&gt;420.1&lt;/td&gt;
&lt;td&gt;91%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;blazar, host yuv&lt;/td&gt;
&lt;td&gt;14.7&lt;/td&gt;
&lt;td&gt;93%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyAV&lt;/td&gt;
&lt;td&gt;11.4&lt;/td&gt;
&lt;td&gt;92% (90–93%)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here we're running a tight loop in a second Python thread with a 1088p 121 frame video being encoded on the main thread. Really this test was to try to induce some contention in Python's GIL (Global Interpreter Lock) to test its impact on Blazar and PyAV. Blazar’s device and host paths are both impacted because there is still some work that happens within the scope of the GIL but the device path is significantly less impacted than host and PyAV paths relative to the previous table with no competing threads.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Streams&lt;/th&gt;
&lt;th&gt;blazar device&lt;/th&gt;
&lt;th&gt;python&lt;/th&gt;
&lt;th&gt;blazar host&lt;/th&gt;
&lt;th&gt;python&lt;/th&gt;
&lt;th&gt;PyAV&lt;/th&gt;
&lt;th&gt;python&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;420.1 fps&lt;/td&gt;
&lt;td&gt;91%&lt;/td&gt;
&lt;td&gt;14.6 fps&lt;/td&gt;
&lt;td&gt;93%&lt;/td&gt;
&lt;td&gt;11.4 fps&lt;/td&gt;
&lt;td&gt;85%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;822.9 fps&lt;/td&gt;
&lt;td&gt;92%&lt;/td&gt;
&lt;td&gt;21.1 fps&lt;/td&gt;
&lt;td&gt;90%&lt;/td&gt;
&lt;td&gt;15.6 fps&lt;/td&gt;
&lt;td&gt;79%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;885.7 fps&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;86%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;41.1 fps&lt;/td&gt;
&lt;td&gt;86%&lt;/td&gt;
&lt;td&gt;28.2 fps&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;64%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here we are looking at how this scales under GIL contention with more threads. Using the zero-copy device path we're limited by NVENC throughput. The encoder unit is sitting at 100% utilization so we're not able to get more out of it past about 2 threads (at least on my machine). However for the host path in Blazar and the Python path we see worsening performance for the tight python loop as the thread count increases, and PyAV is not scaling quite as well as Blazar host path. I think this is probably an area for improvement on the Blazar side too, both the device and host paths reduce the other Python thread's performance to 86% of baseline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where we're at today
&lt;/h3&gt;

&lt;p&gt;Today the project has support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hardware encoders: NVENC (AV1, HEVC, AVC), VideoToolbox (HEVC, AVC)&lt;/li&gt;
&lt;li&gt;Software encoders: x264, x265, vpx (VP9), svt-av1&lt;/li&gt;
&lt;li&gt;Opus audio codec is currently supported&lt;/li&gt;
&lt;li&gt;YUV conversion on GPU or CPU&lt;/li&gt;
&lt;li&gt;fMP4 or Buffer output&lt;/li&gt;
&lt;li&gt;Custom configurations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where I want to take this
&lt;/h3&gt;

&lt;p&gt;I have ideas for the future of the project. I think if we start to see some adoption there will of course be bugs and feature requests. I think that having model-aware and scene-aware encoding might be an interesting feature. I also want to explore using latents to identify regions of interest or use other signals to inform encoding decisions.&lt;/p&gt;

&lt;p&gt;Anyway if you are running generative video models please check this project out, I am happy to take any feedback! If you want to contribute that is even better!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>opensource</category>
      <category>machinelearning</category>
      <category>ai</category>
    </item>
    <item>
      <title>ARM Matmul Continued: BFMMLA Edition</title>
      <dc:creator>james hurley</dc:creator>
      <pubDate>Thu, 01 Oct 2026 03:08:20 +0000</pubDate>
      <link>https://dev.to/jamesgh/arm-matmul-continued-bfmmla-edition-20ld</link>
      <guid>https://dev.to/jamesgh/arm-matmul-continued-bfmmla-edition-20ld</guid>
      <description>&lt;p&gt;This is a continuation of my &lt;a href="https://dev.to/jamesgh/arm-matrix-multiplication-neon-edition-hpp"&gt;previous article&lt;/a&gt; on using ARM NEON to do matrix multiplication.&lt;/p&gt;

&lt;p&gt;Here's a fun one, we're going to use BFMMLA to do 2x4 @ 4x2 matmul on bf16 inputs. The result is a 2x2 matrix in F32 accumulators in a single float register. We'll break this one up a little more than the last post because it's a little more involved.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;&lt;span class="cp"&gt;#if defined(__APPLE__)&lt;/span&gt;
&lt;span class="cp"&gt;#define MALLOC _malloc&lt;/span&gt;
&lt;span class="cp"&gt;#define FREE   _free&lt;/span&gt;
&lt;span class="cp"&gt;#else&lt;/span&gt;
&lt;span class="cp"&gt;#define MALLOC malloc&lt;/span&gt;
&lt;span class="cp"&gt;#define FREE   free&lt;/span&gt;
&lt;span class="cp"&gt;#endif&lt;/span&gt;

&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nl"&gt;global&lt;/span&gt; &lt;span class="nf"&gt;_mmul_8x8_bf16_mma&lt;/span&gt;
&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nl"&gt;extern&lt;/span&gt; &lt;span class="nb"&gt;MALLOC&lt;/span&gt;
&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nl"&gt;extern&lt;/span&gt; &lt;span class="nb"&gt;FREE&lt;/span&gt;

&lt;span class="nl"&gt;_mmul_8x8_bf16_mma&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;preserve&lt;/span&gt; &lt;span class="nv"&gt;link&lt;/span&gt; &lt;span class="nv"&gt;register&lt;/span&gt; &lt;span class="nv"&gt;because&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt;&lt;span class="sc"&gt;'ll be calling out to malloc/free&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x29&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x30&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#-&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]!&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;free&lt;/span&gt; &lt;span class="nv"&gt;up&lt;/span&gt; &lt;span class="nv"&gt;some&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x19&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#-&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="o"&gt;]!&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x27&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x28&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;free&lt;/span&gt; &lt;span class="nv"&gt;up&lt;/span&gt; &lt;span class="nv"&gt;fp&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt; &lt;span class="nv"&gt;since&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;will&lt;/span&gt; &lt;span class="nv"&gt;use&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#-&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="o"&gt;]!&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x19&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x6&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x7&lt;/span&gt;

    &lt;span class="nb"&gt;mul&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
    &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;f16&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;uxtw&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;
    &lt;span class="nb"&gt;bl&lt;/span&gt;  &lt;span class="nv"&gt;MALLOC&lt;/span&gt;     &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;alloc&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
    &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x27&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="nb"&gt;beq&lt;/span&gt; &lt;span class="nv"&gt;alloc_fail&lt;/span&gt;

    &lt;span class="nb"&gt;mul&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w20&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;BM&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
    &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="nb"&gt;uxtw&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;
    &lt;span class="nb"&gt;bl&lt;/span&gt; &lt;span class="nv"&gt;MALLOC&lt;/span&gt;
    &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x28&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="nb"&gt;beq&lt;/span&gt; &lt;span class="nv"&gt;alloc_fail&lt;/span&gt;

    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x19&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x20&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x21&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x22&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x23&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x24&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;

    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x27&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x28&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q16&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q31&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="nv"&gt;x8&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;half&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;precision&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q7&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q15&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;pA&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;pB&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;pC&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x6&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x7&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;BM&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x20&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;x24&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;counters&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;mostly housekeeping and prep here. We are allocating two scratch slabs for inputs from the A and B matrices. The reason we are doing this is because we need to swizzle the inputs to be in the right shape for a 2x4 or 4x2 matrix such that we get a sensible output result. We will swizzle as we load data rather than as we perform compute so that we don't have to do it multiple times.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;&lt;span class="nl"&gt;mov&lt;/span&gt; &lt;span class="nb"&gt;x20&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bm&lt;/span&gt;
    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;M_block&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;outer&lt;/span&gt; &lt;span class="nv"&gt;loop&lt;/span&gt; &lt;span class="nv"&gt;blocking&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
        &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
        &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;M_block_x&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;can&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bm_l&lt;/span&gt;
        &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;M_block_load&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
            &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w7&lt;/span&gt;
            &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;M_block_load_x&lt;/span&gt;
            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bm_k_l&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;M_block_load_k&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;M_block_load_k_x&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;Why&lt;/span&gt; &lt;span class="nv"&gt;are&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;loading&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt; &lt;span class="nv"&gt;rows&lt;/span&gt; &lt;span class="nv"&gt;at&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;time&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nv"&gt;Because&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="nv"&gt;columns&lt;/span&gt; &lt;span class="nv"&gt;at&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;time&lt;/span&gt; &lt;span class="nv"&gt;due&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;vector&lt;/span&gt; &lt;span class="nv"&gt;width&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;Why&lt;/span&gt; &lt;span class="nv"&gt;are&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;reordering&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="nv"&gt;blocks&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="nv"&gt;Loading&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="nv"&gt;rows&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="nv"&gt;block&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;phase&lt;/span&gt; &lt;span class="nv"&gt;may&lt;/span&gt; &lt;span class="nv"&gt;cause&lt;/span&gt; &lt;span class="nv"&gt;register&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;exhaustion&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;but&lt;/span&gt; &lt;span class="nv"&gt;mostly&lt;/span&gt; &lt;span class="nv"&gt;I&lt;/span&gt; &lt;span class="nv"&gt;haven&lt;/span&gt;&lt;span class="sc"&gt;'t tried it yet).. we make up for this in the compute phase&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bm&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;bm_l&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;bm_k_l&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;
                &lt;span class="nb"&gt;uxtw&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;move&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;stride&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m0k0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0k1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0k2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m1k3&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m0k4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0k5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0k6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m1k7&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m2k0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m2k1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m2k2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt; &lt;span class="nv"&gt;m3k3&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m2k4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m4k0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m4k4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m6k0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m7k3&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m6k4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m7k7&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;reorder&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt; &lt;span class="nv"&gt;blocks&lt;/span&gt; &lt;span class="nv"&gt;such&lt;/span&gt; &lt;span class="nv"&gt;that&lt;/span&gt; &lt;span class="nv"&gt;there&lt;/span&gt; &lt;span class="nv"&gt;are&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="sc"&gt;'s for all 8 of the m'&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;loading&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="nv"&gt;at&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;time&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;M_block_load_k&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;M_block_load_k_x&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;loading&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt; &lt;span class="nv"&gt;rows&lt;/span&gt; &lt;span class="nv"&gt;at&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;time&lt;/span&gt;
            &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;M_block_load&lt;/span&gt;
        &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;M_block_load_x&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we are loading data from the A matrix input and storing it into A scratch.. Here we want to reorder the input so that we have groups of 2 M rows and 4 K columns arranged contiguously. This is so that we can put these 8 values into a single 128-bit register representing a 2x4 matrix to use with bfmmla. Because of the load width we actually end up loading 8 values in the K dimension from mat A at once. So we put K values 4-7 after we have all 0-3 values because K will be our compute inner loop, so we'll iterate through all of K, then iterate through the N block, then we will move to the next M block. Our loads therefore store all of these values contiguously such that we can just do contiguous 128-bit wide ldr ahead of the compute phase.&lt;/p&gt;

&lt;p&gt;Ordering the data in this way is useful for another reason. Because we are not storing all values for a single row contiguously we are able to take advantage of ILP more easily. Our accumulator for a given output value is not going to be used for all input K values at once, it's going to just do a group of 4, then we have to get through the rest of the output values, then we circle back and do the next group of 4. There is no dependency between any of the ops and a single accumulator register.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bn&lt;/span&gt;
        &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;N_block&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;outer&lt;/span&gt; &lt;span class="nv"&gt;loop&lt;/span&gt; &lt;span class="nv"&gt;blocking&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
            &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
            &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;N_block_x&lt;/span&gt;

            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;alright&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;want&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;mat&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt; &lt;span class="nv"&gt;into&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;are&lt;/span&gt; &lt;span class="nv"&gt;going&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;each&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt; &lt;span class="nv"&gt;contiguously&lt;/span&gt; &lt;span class="nv"&gt;so&lt;/span&gt; &lt;span class="nv"&gt;that&lt;/span&gt; &lt;span class="nv"&gt;they&lt;/span&gt; &lt;span class="nv"&gt;are&lt;/span&gt; &lt;span class="nv"&gt;packed&lt;/span&gt; &lt;span class="nv"&gt;nicely&lt;/span&gt;
            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bn_l&lt;/span&gt;
            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;can&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;N_block_load&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w6&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;N_block_load_x&lt;/span&gt;

                &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k_l&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;N_block_load_k&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
                    &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                    &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;N_block_load_k_x&lt;/span&gt;
                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;Offset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;bn&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;bn_l&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;k_l&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;
                    &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;
                    &lt;span class="nb"&gt;uxtw&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;
                    &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;pMatB&lt;/span&gt;

                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;Now&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;have&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="nv"&gt;x16&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;need&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;reshape&lt;/span&gt; &lt;span class="nv"&gt;these&lt;/span&gt; &lt;span class="nv"&gt;into&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="nv"&gt;x2&lt;/span&gt; &lt;span class="nv"&gt;vectors&lt;/span&gt; &lt;span class="nv"&gt;for&lt;/span&gt;
                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bfmmla&lt;/span&gt;
                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;N0&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;k0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; &lt;span class="nv"&gt;N1&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;k0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k0n0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k0n1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n3&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k0n4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k0n5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n7&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k2n0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k2n1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n3&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k2n4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k2n5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n7&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;  &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k0n0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k2n0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;  &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k0n2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k2n2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n3&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k0n4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k2n4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n5&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k0n6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k1n6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k2n6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;...&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;k3n7&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;wrote&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt;
                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;wrote&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt;

                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;k_l&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
                    &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;N_block_load_k&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;N_block_load_k_x&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;wide&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;N_block_load&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;N_block_load_x&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the N block where we load from Matrix B, it's the same idea but our swizzle is a little bit different because the orientation for this matrix is different. Again we want to have 4 values from each column interleaved in pairs so that we can do a 2x4 @ 4x2 bfmmla.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;perform&lt;/span&gt; &lt;span class="nv"&gt;compute&lt;/span&gt; &lt;span class="nv"&gt;on&lt;/span&gt; &lt;span class="nv"&gt;loaded&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt;
            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;M_inner&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w7&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nv"&gt;BM&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;M_inner_x&lt;/span&gt;

                &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;read&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;can&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt;

                &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;N_inner&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
                    &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w6&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;
                    &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;N_inner_x&lt;/span&gt;


                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;create&lt;/span&gt; &lt;span class="nv"&gt;an&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;can&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;
                    &lt;span class="nb"&gt;mul&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nv"&gt;w1&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;uxtw&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;clear&lt;/span&gt; &lt;span class="nv"&gt;accumulators&lt;/span&gt; &lt;span class="nv"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;altmacro&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;macro&lt;/span&gt; &lt;span class="nv"&gt;clear_reg&lt;/span&gt; &lt;span class="nv"&gt;index&lt;/span&gt;
                        &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;index&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endm&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;rept&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
                        &lt;span class="nf"&gt;clear_reg&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
                        &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endr&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;noaltmacro&lt;/span&gt;

                    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;K_inner&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
                        &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                        &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;K_inner_x&lt;/span&gt;

                        &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                        &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;
                        &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;
                        &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;K0&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;K3&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;

                        &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;
                        &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v20&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v21&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v22&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v23&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;

                        &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;
                        &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v24&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v25&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v26&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v27&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;

                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v28&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v29&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v30&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v31&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;

                        &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;
                        &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;K4&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;K7&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;

                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v20&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v21&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v22&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v23&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;

                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v24&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v25&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v26&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v27&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;

                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v28&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v29&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N2&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v30&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N4&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
                        &lt;span class="nb"&gt;bfmmla&lt;/span&gt; &lt;span class="nv"&gt;v31&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;M6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N6&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;


                        &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
                        &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;K_inner&lt;/span&gt; 
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;K_inner_x&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we are doing the actual compute loop. We do 16 bfmmlas at once, then we do another 16 on the same group of accumulators. So we're moving through the K inner dimension 8 elements at a time and as you can see for both scratch pointers we can simply advance the pointer by 32 bytes every load.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;need&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;swizzle&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt; &lt;span class="nv"&gt;order&lt;/span&gt; &lt;span class="nv"&gt;here&lt;/span&gt; &lt;span class="nv"&gt;because&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="nv"&gt;our&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt; &lt;span class="nv"&gt;are&lt;/span&gt; &lt;span class="nv"&gt;holding&lt;/span&gt;
                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;x2&lt;/span&gt; &lt;span class="nv"&gt;matrices&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt;&lt;span class="sc"&gt;'re working on an 8x8 tile&lt;/span&gt;

                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m0n0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0n1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0n2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0n3&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m1n0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m1n1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m1n2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m1n3&lt;/span&gt;
                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m0n4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0n5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0n6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;m0n7&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mf"&gt;..&lt;/span&gt; &lt;span class="nv"&gt;etc&lt;/span&gt;
                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v20&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v21&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v20&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v21&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v22&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v23&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v22&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v23&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v24&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v25&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v24&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v25&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v26&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v27&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v26&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v27&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v28&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v29&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v28&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v29&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip1&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v30&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v31&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;
                    &lt;span class="nb"&gt;zip2&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v30&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v31&lt;/span&gt;&lt;span class="mf"&gt;.2&lt;/span&gt;&lt;span class="nv"&gt;d&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;bn&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bn&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bn&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;
                    &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt; 
                    &lt;span class="nb"&gt;uxtw&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;
                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="nv"&gt;accumulators&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
                    &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;N_inner&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;N_inner_x&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;M_inner&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;M_inner_x&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w6&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;bn&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt;
            &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;N_block&lt;/span&gt;
        &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;N_block_x&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
        &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w7&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;bm&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;BM&lt;/span&gt;
        &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;M_block&lt;/span&gt;
    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;M_block_x&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;

    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;free&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
    &lt;span class="nb"&gt;bl&lt;/span&gt; &lt;span class="nv"&gt;FREE&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;
    &lt;span class="nb"&gt;bl&lt;/span&gt; &lt;span class="nv"&gt;FREE&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="nf"&gt;alloc_fail&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;pop&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt; &lt;span class="nv"&gt;back&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;stack&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;

    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x27&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x28&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x19&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;

    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x29&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x30&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;
    &lt;span class="nb"&gt;ret&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's the end of it. The most interesting part is writing the accumulators. At this point the accumulator registers are holding 2x2 matrices that need to be swizzled to be in the right format for the 8x8 tile we're working on. &lt;/p&gt;

&lt;p&gt;On Graviton 5, this gets us to about 280 Gflops on a single core. The performance is sensitive to the size of the M and N block size. A BN=BM=64 size nets us about 250 Gflops, whereas BN=128, BM=256 we see 280. The performance on my M2 Mac is much worse, I am guessing the instruction is not actually well supported by the M2 processor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr1ke327cs43f2f35mmpj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr1ke327cs43f2f35mmpj.png" alt=" " width="664" height="712"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>coding</category>
      <category>performance</category>
      <category>programming</category>
    </item>
    <item>
      <title>Talk: Real-time Video Upscaling Using CNNs and WebGPU</title>
      <dc:creator>james hurley</dc:creator>
      <pubDate>Mon, 21 Sep 2026 19:19:25 +0000</pubDate>
      <link>https://dev.to/jamesgh/talk-real-time-video-upscaling-using-cnns-and-webgpu-265c</link>
      <guid>https://dev.to/jamesgh/talk-real-time-video-upscaling-using-cnns-and-webgpu-265c</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/CozLYpZ5i1c" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>performance</category>
    </item>
    <item>
      <title>ARM Matrix Multiplication (NEON Edition)</title>
      <dc:creator>james hurley</dc:creator>
      <pubDate>Sat, 19 Sep 2026 04:47:51 +0000</pubDate>
      <link>https://dev.to/jamesgh/arm-matrix-multiplication-neon-edition-hpp</link>
      <guid>https://dev.to/jamesgh/arm-matrix-multiplication-neon-edition-hpp</guid>
      <description>&lt;p&gt;it's been a little while since i messed around with writing any sort of neural net kernels. lots of people are doing it these days and the tools are pretty advanced for cuda and whatever else we've got going on in gpu land.&lt;/p&gt;

&lt;p&gt;and yet people keep making all these dang ARM computers in my cloud. so how do we make two matrices who love each other very much create a third matrix using arm assembly? and, more importantly, can we make it gooooooo (pretty fast, maybe not gpu fast but you know kinda fast)?&lt;/p&gt;

&lt;p&gt;anyway we're gonna try to do the thing using neon assembly to start with. nothing too advanced. i'll make another article about using SME/SVE2 after this.&lt;/p&gt;

&lt;p&gt;today's weapon of choice is a macbook air with an M2 processor. The theoretical limit of f32 single-threaded matmul for this processor is 112 GFlops (3.5Ghz * 4 FMA/Cycle * 4 lanes (128-bit register / 32 bits) * 2 flops/fma (multiply, accumulate)).&lt;/p&gt;

&lt;p&gt;the performance numbers in this post are based on a sweep of shapes between 64x64 and 1024x1024 (with 20 runs each step), using the average value for each kernel. you can find a chart of sweeps at the bottom of this post.&lt;/p&gt;

&lt;p&gt;here's the basic idea:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;mmul_ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;M&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;M&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;acc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;acc&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;K&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
            &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;acc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At -O2 this runs at 2.09 Gflops, about 1.9% of our theoretical maximum..&lt;/p&gt;

&lt;p&gt;let's try to write this naive implementation in assembly&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;function&lt;/span&gt; &lt;span class="nv"&gt;signature&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;same&lt;/span&gt; &lt;span class="nv"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;above&lt;/span&gt;
&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;x0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;x1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;x2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;x3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;A&lt;/span&gt;
&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;x4&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;B&lt;/span&gt;
&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nb"&gt;x5&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;C&lt;/span&gt;
&lt;span class="nl"&gt;_mmul_naive_asm&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;
        &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
        &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;
            &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
            &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
            &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;s0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;offA&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;offB&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
                &lt;span class="nb"&gt;fmadd&lt;/span&gt; &lt;span class="nv"&gt;s2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;s0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;s2&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;FMA&lt;/span&gt; &lt;span class="nv"&gt;acc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;acc&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;s0&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;increment&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
            &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="nv"&gt;s2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;increment&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
        &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;increment&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
    &lt;span class="nb"&gt;ret&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;alright we have 1.98 Gflops (or about 1.8% of the theoretical max)... the c compiler is smarter than me.&lt;/p&gt;

&lt;p&gt;let's do some simd...&lt;br&gt;
we're going to load 4 values from B into a single 128-bit register and broadcast a single value from A into a 128-bit register and use the fmla instruction to do 4 fma's at the same time across 4 output values. an important caveat here is now N needs to be divisible by 4. we could add some overhang stuff but right now we're in control of the shape of the matrices and i don't feel like doing that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;&lt;span class="nl"&gt;_mmul_vec_asm&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;
        &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
        &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;
            &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
            &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;clear&lt;/span&gt; &lt;span class="nv"&gt;output&lt;/span&gt; &lt;span class="nv"&gt;register&lt;/span&gt;
            &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt;
                &lt;span class="nb"&gt;ld1r&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;single&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt; &lt;span class="nv"&gt;into&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="nv"&gt;lanes&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;
                &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;increment&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
            &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="nv"&gt;q2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;increment&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
            &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
        &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;increment&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
    &lt;span class="nb"&gt;ret&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;alright this gets us to 7.86 Gflops, about 7% of our target.. but about 4x better than where we were at before - progress!&lt;/p&gt;

&lt;p&gt;let's try unrolling K a little more too... get a little more compute happening...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;
&lt;span class="nl"&gt;_mmul_vec_asm2&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;
        &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
        &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;
            &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
            &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;

            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;clear&lt;/span&gt; &lt;span class="nv"&gt;output&lt;/span&gt; &lt;span class="nv"&gt;accumulators&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;We&lt;/span&gt; &lt;span class="nv"&gt;are&lt;/span&gt; &lt;span class="nv"&gt;using&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;here&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;remove&lt;/span&gt; &lt;span class="nv"&gt;dependencies&lt;/span&gt; &lt;span class="nv"&gt;within&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="nv"&gt;blocks&lt;/span&gt;
            &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q3&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;outputs&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q4&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q7&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q16&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q19&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt;
                &lt;span class="nb"&gt;ld1r&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;single&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;value&lt;/span&gt; &lt;span class="nv"&gt;into&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="nv"&gt;lanes&lt;/span&gt;
                &lt;span class="nb"&gt;ld1r&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
                &lt;span class="nb"&gt;ld1r&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
                &lt;span class="nb"&gt;ld1r&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;},&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt;
                &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
                &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
                &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
                &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;reduce&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;will&lt;/span&gt; &lt;span class="nv"&gt;sum&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt; &lt;span class="nv"&gt;into&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;then&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt; &lt;span class="nv"&gt;into&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;finally&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt; &lt;span class="nv"&gt;into&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;again&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;allow&lt;/span&gt; &lt;span class="nv"&gt;multiple&lt;/span&gt; &lt;span class="nv"&gt;floating&lt;/span&gt; &lt;span class="nv"&gt;point&lt;/span&gt; &lt;span class="nv"&gt;instructions&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;run&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;parallel&lt;/span&gt;
            &lt;span class="nb"&gt;fadd&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
            &lt;span class="nb"&gt;fadd&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
            &lt;span class="nb"&gt;fadd&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;outputs&lt;/span&gt;&lt;span class="mf"&gt;...&lt;/span&gt;
            &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;do&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="nv"&gt;at&lt;/span&gt; &lt;span class="nv"&gt;once&lt;/span&gt;
            &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
        &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
    &lt;span class="nb"&gt;ret&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ok now we're at 15.95Gflops (14.2%). So we're starting to move.. something you might have noticed here is we're still writing to a single output but we have 4 accumulators. this is so we can have the cpu pipeline the fmla instructions by eliminating dependencies between fmla executions. if we use a single register here we lose 3-5Gflops.&lt;/p&gt;

&lt;p&gt;but the problem here is we're not really getting a lot of compute intensity for each load. one of the classic tricks to improve matrix multiplication performance that you might have seen or used if you've ever done any gpu kernels is tiling. if you're not familiar with it, the idea is to work on patches of the output matrix by sliding windows along the input matrices' K inner dimension. this way we can load a bunch of data and then do a whole bunch of compute to make those loads relatively less expensive via amortization. we are also reducing the overall number of redundant loads by reusing data in registers rather than reloading it.&lt;/p&gt;

&lt;p&gt;We have 32 128-bit registers at our disposal here for doing float operations.. so we can have an 8x8 output tile using 16 of those registers and use the other 16 for inputs (8x4 @ 4x8). Now we will do 16 loads and 64 fmla operations on each iteration over the K dimension. We will still unroll K by 4 as we did in the last example, but we'll do 8 values in both the M and N dimensions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;&lt;span class="nl"&gt;_mmul_r_tile_8x8&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;free&lt;/span&gt; &lt;span class="nv"&gt;up&lt;/span&gt; &lt;span class="nv"&gt;fp&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt; &lt;span class="nv"&gt;since&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;will&lt;/span&gt; &lt;span class="nv"&gt;use&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#-&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="o"&gt;]!&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q15&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="nv"&gt;x8&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;single&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;precision&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q16&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q23&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q24&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q31&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
        &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
        &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
            &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
            &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;

            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;clear&lt;/span&gt; &lt;span class="nv"&gt;accumulators&lt;/span&gt; &lt;span class="nv"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;altmacro&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;macro&lt;/span&gt; &lt;span class="nv"&gt;clear_reg&lt;/span&gt; &lt;span class="nv"&gt;index&lt;/span&gt;
                &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;index&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endm&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;rept&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
                &lt;span class="nf"&gt;clear_reg&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endr&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;noaltmacro&lt;/span&gt;

            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="nv"&gt;x4&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt; &lt;span class="nv"&gt;x&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="nv"&gt;x8&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt; &lt;span class="nv"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;per&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;block&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="nv"&gt;direction&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt; &lt;span class="nv"&gt;or&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="nv"&gt;direction&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;move&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;stride&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q27&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;

                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q16&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;move&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;stride&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q17&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q18&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q19&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;template&lt;/span&gt; &lt;span class="nv"&gt;for&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="nv"&gt;fmlas&lt;/span&gt;&lt;span class="mf"&gt;...&lt;/span&gt; &lt;span class="nv"&gt;makes&lt;/span&gt; &lt;span class="nv"&gt;life&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;little&lt;/span&gt; &lt;span class="nv"&gt;easier&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;macro&lt;/span&gt; &lt;span class="nv"&gt;fmla16&lt;/span&gt; &lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;a1&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v20&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v20&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v21&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v21&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v22&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v22&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v23&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.4&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v23&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endm&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v25&lt;/span&gt;

                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q28&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q29&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=1&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v27&lt;/span&gt;

                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q30&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q31&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=2&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v28&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v29&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=3&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v30&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v31&lt;/span&gt;

                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="nv"&gt;accumulators&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
            &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;
            &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
        &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;
        &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;pop&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt; &lt;span class="nv"&gt;back&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;stack&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;
    &lt;span class="nb"&gt;ret&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So this gets us to 96.65 Gflops, about 86.3% of our target!&lt;/p&gt;

&lt;p&gt;Some details here.. first, hell yea we unrolled that by a lot... &lt;/p&gt;

&lt;p&gt;Second in these vector instructions you'll notice we are indexing into the registers loaded in A. This is because we loaded values in the K dimension for A when we did the 128-bit load (whereas for B we were loading values along the N dimension). So as we iterate along K we need to index into the registers holding A data and increment which registers we're using for the B data.&lt;/p&gt;

&lt;p&gt;third interesting thing we have some of our B data loads interleaved with flmas. this is to do something like double buffering but maybe in a lazier (as in i had to type less to do this) way. it buys us about 5 Gflops.&lt;/p&gt;

&lt;p&gt;Because our fmlas with dependencies are pretty far apart we are also not doing the trick from the previous one where we used multiple accumulators.&lt;/p&gt;

&lt;p&gt;if you've done this on a gpu before you might also notice that there's no intermediate load step into workgroup shared memory. first of all there's no work group so there's no workgroup shared memory. secondly with this tile size we end up being compute bound on the M2, so there's no need for us to explicitly shuffle memory around.&lt;/p&gt;

&lt;p&gt;but why stop at 97 gflops when we can go for 200 gflops? FP16 time.&lt;/p&gt;

&lt;p&gt;this one is going to be an 8x16 tile. we'll use the same number of registers but be able to double the number of values we compute.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;&lt;span class="nl"&gt;_mmul_r_tile_8x8_f16&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;free&lt;/span&gt; &lt;span class="nv"&gt;up&lt;/span&gt; &lt;span class="nv"&gt;fp&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt; &lt;span class="nv"&gt;since&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;will&lt;/span&gt; &lt;span class="nv"&gt;use&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#-&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="o"&gt;]!&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q16&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q31&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="nv"&gt;x8&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;half&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;precision&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q7&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q15&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
        &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
        &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
            &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
            &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;

            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;clear&lt;/span&gt; &lt;span class="nv"&gt;accumulators&lt;/span&gt; &lt;span class="nv"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;altmacro&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;macro&lt;/span&gt; &lt;span class="nv"&gt;clear_reg&lt;/span&gt; &lt;span class="nv"&gt;index&lt;/span&gt;
                &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;index&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endm&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;rept&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
                &lt;span class="nf"&gt;clear_reg&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endr&lt;/span&gt;
            &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;noaltmacro&lt;/span&gt;

            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="nv"&gt;x4&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt; &lt;span class="nv"&gt;x&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="nv"&gt;x8&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt; &lt;span class="nv"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;per&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;block&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="nv"&gt;direction&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt; &lt;span class="nv"&gt;or&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="nv"&gt;direction&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;move&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;stride&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;needed&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="nv"&gt;x8&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;move&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;stride&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;macro&lt;/span&gt; &lt;span class="nv"&gt;fmla16&lt;/span&gt; &lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;a1&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v20&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v21&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v22&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v23&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v24&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v25&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v26&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v27&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v28&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v29&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v30&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v31&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endm&lt;/span&gt;



                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;

                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=1&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;

                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=2&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;

                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=3&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;

                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=4&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;

                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=5&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;


                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=6&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;


                &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=7&lt;/span&gt;
                &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;

                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
            &lt;span class="err"&gt;3:&lt;/span&gt;
            &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="nv"&gt;accumulators&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
            &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q16&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q17&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q18&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q19&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q27&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q28&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q29&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q30&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q31&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
            &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
        &lt;span class="err"&gt;2:&lt;/span&gt;
        &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
        &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
    &lt;span class="err"&gt;1:&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;pop&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt; &lt;span class="nv"&gt;back&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;stack&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;
    &lt;span class="nb"&gt;ret&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;now we're hitting 203.65 gflops, about 91% of the theoretical 224 FP16 GFlops the M2 processor can do on a single core. Something we're doing a little more of in this is interleaving loads with compute to do some double buffering. This also helps recycle registers because we do not have enough registers for a K block size of 8 (although we are sort of forced into that size by loading 128 bits of K from matrix A). You'll notice too that we swapped the input and accumulator registers, this is because the .h[lane] notation does not work above v15.&lt;/p&gt;

&lt;p&gt;anyway this was fun... next time we'll do some integer matmul and mess around with sme or sve2 or whatever...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fidwvm6jz374h1fas5y60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fidwvm6jz374h1fas5y60.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Epilogue: Maybe we do need some cache blocking, after all.
&lt;/h2&gt;

&lt;p&gt;So I started poking at Graviton instances, using C9g which apparently has a 2MB L2 cache (vs the M2's 16MB L2) and saw some pretty steep performance drop off when running the sweep...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4097bkskv87l8vv4ugr5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4097bkskv87l8vv4ugr5.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;the dashed lines are the Graviton instance.. you can see that as the matrix sizes grow the performance decreases. So, we need to load some data into an intermediate scratch buffer first. For this we're going to make a single scratch block to pull data out of B into a block where loads can be contiguous (vs the current stride of N). We can block in M (for mat A) and K as well, but N (mat B) is probably going to be the most fruitful for us to start with because for each M row we are loading the entire matrix B, whereas we only load an 8xK strip  from matrix A (which, at the tested sizes, is small enough to stay resident in L1...)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight armasm"&gt;&lt;code&gt;&lt;span class="nl"&gt;mmul_c_tile_r_tile_8x16_f16&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;preserve&lt;/span&gt; &lt;span class="nv"&gt;link&lt;/span&gt; &lt;span class="nv"&gt;register&lt;/span&gt; &lt;span class="nv"&gt;because&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt;&lt;span class="sc"&gt;'ll be calling out to malloc/free&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x29&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x30&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#-&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]!&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;free&lt;/span&gt; &lt;span class="nv"&gt;up&lt;/span&gt; &lt;span class="nv"&gt;some&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x19&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#-&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="o"&gt;]!&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;free&lt;/span&gt; &lt;span class="nv"&gt;up&lt;/span&gt; &lt;span class="nv"&gt;fp&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt; &lt;span class="nv"&gt;since&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;will&lt;/span&gt; &lt;span class="nv"&gt;use&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#-&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="o"&gt;]!&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;d14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x19&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x6&lt;/span&gt;

    &lt;span class="nb"&gt;mul&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
    &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;f16&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;uxtw&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w0&lt;/span&gt;
    &lt;span class="nb"&gt;bl&lt;/span&gt;  &lt;span class="nv"&gt;MALLOC&lt;/span&gt;     &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;alloc&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
    &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="nb"&gt;beq&lt;/span&gt; &lt;span class="nv"&gt;alloc_fail&lt;/span&gt;


    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x19&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x20&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x21&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x22&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x23&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x24&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q16&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q31&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="nv"&gt;x8&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;half&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;precision&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q7&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="mf"&gt;..&lt;/span&gt;&lt;span class="nv"&gt;q15&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt; &lt;span class="nv"&gt;inputs&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;pA&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x4&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;pB&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;pC&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x6&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt;

    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;x8&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;pScratch&lt;/span&gt;


    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w17&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bn&lt;/span&gt;
    &lt;span class="err"&gt;4:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;outer&lt;/span&gt; &lt;span class="nv"&gt;loop&lt;/span&gt; &lt;span class="nv"&gt;blocking&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
        &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w17&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;
        &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;

        &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;alright&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;want&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;mat&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt; &lt;span class="nv"&gt;into&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
        &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;are&lt;/span&gt; &lt;span class="nv"&gt;going&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;each&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt; &lt;span class="nv"&gt;contiguously&lt;/span&gt; &lt;span class="nv"&gt;so&lt;/span&gt; &lt;span class="nv"&gt;that&lt;/span&gt; &lt;span class="nv"&gt;they&lt;/span&gt; &lt;span class="nv"&gt;are&lt;/span&gt; &lt;span class="nv"&gt;packed&lt;/span&gt; &lt;span class="nv"&gt;nicely&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bn_l&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;can&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt;
        &lt;span class="err"&gt;5:&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt;
            &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w6&lt;/span&gt;
            &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;

            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k_l&lt;/span&gt;
            &lt;span class="err"&gt;6:&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;Offset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;bn&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;bn_l&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;k_l&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w17&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;
                &lt;span class="nb"&gt;uxtw&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w12&lt;/span&gt;
                &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;pMatB&lt;/span&gt;
                &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x12&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;wrote&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;k_l&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
            &lt;span class="err"&gt;6:&lt;/span&gt;

            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;wide&lt;/span&gt;
            &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
        &lt;span class="err"&gt;5:&lt;/span&gt;

        &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;perform&lt;/span&gt; &lt;span class="nv"&gt;compute&lt;/span&gt; &lt;span class="nv"&gt;on&lt;/span&gt; &lt;span class="nv"&gt;loaded&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt;
        &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt;
        &lt;span class="err"&gt;1:&lt;/span&gt;
            &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt;
            &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;

            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;read&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;we&lt;/span&gt; &lt;span class="nv"&gt;can&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt;
            &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;
            &lt;span class="err"&gt;2:&lt;/span&gt;
                &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w6&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;
                &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;

                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;clear&lt;/span&gt; &lt;span class="nv"&gt;accumulators&lt;/span&gt; &lt;span class="nv"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;this&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;altmacro&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;macro&lt;/span&gt; &lt;span class="nv"&gt;clear_reg&lt;/span&gt; &lt;span class="nv"&gt;index&lt;/span&gt;
                    &lt;span class="nb"&gt;movi&lt;/span&gt; &lt;span class="nv"&gt;v&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;index&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endm&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;rept&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
                    &lt;span class="nf"&gt;clear_reg&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endr&lt;/span&gt;
                &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;noaltmacro&lt;/span&gt;

                &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;
                &lt;span class="err"&gt;3:&lt;/span&gt;
                    &lt;span class="nb"&gt;cmp&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                    &lt;span class="nb"&gt;bge&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;f&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="nv"&gt;x4&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt; &lt;span class="nv"&gt;x&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="nv"&gt;x8&lt;/span&gt; &lt;span class="nv"&gt;B&lt;/span&gt; &lt;span class="nv"&gt;tile&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt; &lt;span class="nv"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;per&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;block&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;
                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt; &lt;span class="nv"&gt;direction&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;M&lt;/span&gt; &lt;span class="nv"&gt;or&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="nv"&gt;direction&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;
                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;matB&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;
                    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;load&lt;/span&gt; &lt;span class="nv"&gt;all&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;needed&lt;/span&gt; &lt;span class="nv"&gt;values&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;A&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="nv"&gt;x8&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                    &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;move&lt;/span&gt; &lt;span class="nv"&gt;matA&lt;/span&gt; &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;stride&lt;/span&gt; &lt;span class="nv"&gt;K&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="nb"&gt;ldr&lt;/span&gt; &lt;span class="nv"&gt;q7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x13&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;macro&lt;/span&gt; &lt;span class="nv"&gt;fmla16&lt;/span&gt; &lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;a1&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v16&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v17&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v0&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v18&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v19&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v1&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v20&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v21&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v2&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v22&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v23&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v3&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v24&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v25&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v4&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v26&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v27&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v5&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v28&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v29&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v6&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v30&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                        &lt;span class="nb"&gt;fmla&lt;/span&gt; &lt;span class="nv"&gt;v31&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;a1&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="mf"&gt;.8&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v7&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="nv"&gt;lane&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                    &lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;endm&lt;/span&gt;



                    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;

                    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=1&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;

                    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=2&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;

                    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=3&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;

                    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=4&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v9&lt;/span&gt;

                    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=5&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v11&lt;/span&gt;


                    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;q14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x15&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;

                    &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=6&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v13&lt;/span&gt;


                    &lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="nb"&gt;k&lt;/span&gt;&lt;span class="err"&gt;=7&lt;/span&gt;
                    &lt;span class="nb"&gt;fmla16&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;v15&lt;/span&gt;

                    &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;
                    &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;k&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
                &lt;span class="err"&gt;3:&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="nv"&gt;accumulators&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;matC&lt;/span&gt; &lt;span class="nv"&gt;offset&lt;/span&gt;
                &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;bn&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w17&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;bn&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt;
                &lt;span class="nb"&gt;madd&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w14&lt;/span&gt; 
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q16&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q17&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q18&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q19&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q27&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q28&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q29&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;lsl&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="nb"&gt;stp&lt;/span&gt; &lt;span class="nv"&gt;q30&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;q31&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;x14&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
                &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;n&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
                &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
            &lt;span class="err"&gt;2:&lt;/span&gt;
            &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
            &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
        &lt;span class="err"&gt;1:&lt;/span&gt;
        &lt;span class="nb"&gt;add&lt;/span&gt; &lt;span class="nv"&gt;w17&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w17&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;w6&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;advance&lt;/span&gt; &lt;span class="nv"&gt;bn&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;BN&lt;/span&gt;
        &lt;span class="nb"&gt;b&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="nv"&gt;b&lt;/span&gt;
    &lt;span class="err"&gt;4:&lt;/span&gt;

    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x8&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;free&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;scratch&lt;/span&gt; &lt;span class="nv"&gt;memory&lt;/span&gt;
    &lt;span class="nb"&gt;bl&lt;/span&gt; &lt;span class="nv"&gt;FREE&lt;/span&gt;
    &lt;span class="nb"&gt;mov&lt;/span&gt; &lt;span class="nv"&gt;x0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="nf"&gt;alloc_fail&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="nv"&gt;pop&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;registers&lt;/span&gt; &lt;span class="nv"&gt;back&lt;/span&gt; &lt;span class="nv"&gt;from&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;stack&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d11&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d12&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d13&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d14&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d15&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;d8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;d9&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;

    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x21&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x22&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x23&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x24&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x26&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x19&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;

    &lt;span class="nb"&gt;ldp&lt;/span&gt; &lt;span class="nv"&gt;x29&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;x30&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;sp&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt; &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;
    &lt;span class="nb"&gt;ret&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is starting to look a little more like how you would do it on a gpu...&lt;/p&gt;

&lt;p&gt;anyway this has given us a nice boost in performance at larger matrix sizes.. For these tests I used BN=128, so the scratch is holding 8 tiles worth of data with their full K dimension.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feym0cqlrjc5g48w9g5y6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feym0cqlrjc5g48w9g5y6.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(the dashed line is non-blocked)&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
