<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Welcome to the Intel(R) AVX Forum! in Intel® ISA Extensions</title>
    <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909223#M2919</link>
    <description>&lt;P&gt;&lt;FONT color="#000000" face="Times New Roman" size="3"&gt;Hi!&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000" face="Times New Roman" size="3"&gt;&lt;A href="http://www.anandtech.com/showdoc.aspx?i=3073&amp;amp;p=3" target="_blank"&gt;http://www.anandtech.com/showdoc.aspx?i=3073&amp;amp;p=3&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;How about the matrix multiplication with Sandy Bridge? How many instructions does it need to do that?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000" face="Times New Roman" size="3"&gt;Henri.&lt;/FONT&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 02 Apr 2008 21:44:56 GMT</pubDate>
    <dc:creator>urvabara</dc:creator>
    <dc:date>2008-04-02T21:44:56Z</dc:date>
    <item>
      <title>Welcome to the Intel(R) AVX Forum!</title>
      <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909222#M2918</link>
      <description>Please take a moment to read the papers and download the guide from the &lt;A href="http://www.intel.com/software/avx"&gt;Intel AVX&lt;/A&gt; web site. If you have any questions about Intel AVX, AES, or SSE4.2 please aske your questions here and we will do our best to get you the infomration.&lt;BR /&gt;</description>
      <pubDate>Wed, 02 Apr 2008 19:36:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909222#M2918</guid>
      <dc:creator>AaronTersteeg</dc:creator>
      <dc:date>2008-04-02T19:36:05Z</dc:date>
    </item>
    <item>
      <title>Re: Welcome to the Intel(R) AVX Forum!</title>
      <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909223#M2919</link>
      <description>&lt;P&gt;&lt;FONT color="#000000" face="Times New Roman" size="3"&gt;Hi!&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000" face="Times New Roman" size="3"&gt;&lt;A href="http://www.anandtech.com/showdoc.aspx?i=3073&amp;amp;p=3" target="_blank"&gt;http://www.anandtech.com/showdoc.aspx?i=3073&amp;amp;p=3&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;How about the matrix multiplication with Sandy Bridge? How many instructions does it need to do that?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000" face="Times New Roman" size="3"&gt;Henri.&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Apr 2008 21:44:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909223#M2919</guid>
      <dc:creator>urvabara</dc:creator>
      <dc:date>2008-04-02T21:44:56Z</dc:date>
    </item>
    <item>
      <title>Re: Welcome to the Intel(R) AVX Forum!</title>
      <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909224#M2920</link>
      <description>&lt;P&gt;Hi. I've quickly browsed the programmig reference, but I'm a little confused about the vex prefix and how it is encoded compared to the "normal" SSEx instructions. From chapter 4, "Elimination of escape opcode byte (0FH), SIMD Prefix byte (66H, F2H, F3H) ..." What I'm trying to figure out is how the instruction bytes will look if I'm looking at disassembley or debugging information of the AVX instructions. An example with one or two of the new instructions would be appreciated.&lt;/P&gt;
&lt;P&gt;Knut Johnsen, Norway.&lt;/P&gt;</description>
      <pubDate>Thu, 03 Apr 2008 23:37:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909224#M2920</guid>
      <dc:creator>knujohn4</dc:creator>
      <dc:date>2008-04-03T23:37:05Z</dc:date>
    </item>
    <item>
      <title>Re: Welcome to the Intel(R) AVX Forum!</title>
      <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909225#M2921</link>
      <description>&lt;P&gt;Hi Henri,&lt;/P&gt;
&lt;P&gt;I couldn't quite figure what that other site was trying to do - it looks like just a fragment of the whole thing and the baseline has unnecessary copies. Here's my first attempt at an AVX version. I coded up C = A*B and looped over C and B so we can look at the throughput. &lt;/P&gt;
&lt;P&gt;The number of instructions doesn't really matter here (at least on Sandy Bridge) - it appears to be limited by the number of data rearrangements, or multiplies. There's half as many multiplies in the AVX version, but the extra broadcasts should reduce our performance scaling somewhat. (I'll be back to the states soon so I can run it through the performance simulator and post the results here)&lt;/P&gt;
&lt;P&gt;Another neat thing about the AVX version is the extra state - you can imagine wanting to reuse the column broadcast on A and save all those computations - like if one had to compute C = A*B and D = A*E.&lt;/P&gt;
&lt;P&gt;// AVX throughput test of 4x4 MMULs &lt;/P&gt;
&lt;P&gt;void MMUL4x4_AVX()&lt;BR /&gt;{&lt;BR /&gt; __asm {&lt;/P&gt;
&lt;P&gt; mov ecx, 1024&lt;BR /&gt; lea rax, a&lt;BR /&gt; lea rbx, b&lt;BR /&gt; lea rdx, c&lt;/P&gt;
&lt;P&gt; loop_a:&lt;BR /&gt; vmovaps ymm0, [rax]// a13 a12 a11 a10 | a03 a02 a01 a00&lt;BR /&gt; vpermilps ymm1, ymm0, 0x00// a10 a10 a10 a10 | a00 a00 a00 a00&lt;BR /&gt; vpermilps ymm2, ymm0, 0x55// a11 a11 a11 a11 | a01 a01 a01 a01&lt;BR /&gt; vpermilps ymm3, ymm0, 0xCC// a12 a12 a12 a12 | a01 a02 a02 a02&lt;BR /&gt; vpermilps ymm4, ymm0, 0xFF// a13 a13 a13 a13 | a01 a03 a03 a03&lt;/P&gt;
&lt;P&gt; vmovaps ymm0, [rax+32]// a33 a32 a31 a30 | a23 a22 a21 a20&lt;BR /&gt; vpermilps ymm5, ymm0, 0x00// a40 a30 a30 a30 | a20 a20 a20 a20&lt;BR /&gt; vpermilps ymm6, ymm0, 0x55// a41 a31 a31 a31 | a21 a21 a21 a21&lt;BR /&gt; vpermilps ymm7, ymm0, 0xCC// a42 a32 a32 a32 | a21 a22 a22 a22&lt;BR /&gt; vpermilps ymm8, ymm0, 0xFF// a43 a33 a33 a33 | a21 a23 a23 a23&lt;/P&gt;
&lt;P&gt; vbroadcastf128 ymm9, [rbx]// b03 b02 b01 b00 | b03 b02 b01 b00&lt;BR /&gt; vbroadcastf128 ymm10, [rbx+16]// b13 b12 b11 b10 | b13 b12 b11 b10&lt;BR /&gt; vbroadcastf128 ymm11, [rbx+32]// b23 b22 b21 b20 | b23 b22 b21 b20&lt;BR /&gt; vbroadcastf128 ymm12, [rbx+48]// b33 b32 b31 b30 | b33 b32 b31 b30&lt;/P&gt;
&lt;P&gt; vmulps ymm1, ymm1, ymm9&lt;BR /&gt; vmulps ymm2, ymm2, ymm10&lt;BR /&gt; vmulps ymm3, ymm3, ymm11&lt;BR /&gt; vmulps ymm4, ymm4, ymm12&lt;BR /&gt; vaddps ymm1, ymm1, ymm2&lt;BR /&gt; vaddps ymm3, ymm3, ymm4&lt;BR /&gt; vaddps ymm1, ymm1, ymm3&lt;/P&gt;
&lt;P&gt;
 vmulps ymm5, ymm5, ymm9&lt;BR /&gt; vmulps ymm6, ymm6, ymm10&lt;BR /&gt; vmulps ymm7, ymm7, ymm11&lt;BR /&gt; vmulps ymm8, ymm8, ymm12&lt;BR /&gt; vaddps ymm5, ymm5, ymm6&lt;BR /&gt; vaddps ymm7, ymm7, ymm8&lt;BR /&gt; vaddps ymm5, ymm5, ymm7&lt;/P&gt;
&lt;P&gt; vmovaps [rdx], ymm1&lt;BR /&gt; vmovaps [rdx+32], ymm5&lt;/P&gt;
&lt;P&gt; add rbx, 64&lt;BR /&gt; add rdx, 64&lt;/P&gt;
&lt;P&gt; sub ecx, 1&lt;BR /&gt; jg loop_a&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// Baseline for comparsion (can you beat this on SNB?)&lt;/P&gt;
&lt;P&gt;void MMUL4x4_SSE()&lt;BR /&gt;{&lt;BR /&gt; __asm {&lt;/P&gt;
&lt;P&gt; mov ecx, 1024&lt;BR /&gt; lea rax, a&lt;BR /&gt; lea rbx, b&lt;BR /&gt; lea rdx, c&lt;/P&gt;
&lt;P&gt; loop_a:&lt;BR /&gt; movaps xmm0, [rax]&lt;BR /&gt; pshufd xmm1, xmm0, 0x00 // a00 a00 a00 a00 &lt;BR /&gt; pshufd xmm2, xmm0, 0x55 // a01 a01 a01 a01&lt;BR /&gt; pshufd xmm3, xmm0, 0xcc // a01 a02 a02 a02&lt;BR /&gt; pshufd xmm4, xmm0, 0xFF // a01 a03 a03 a03&lt;/P&gt;
&lt;P&gt; movaps xmm5, [rbx]//b03 b02 b01 b00&lt;BR /&gt; movaps xmm6, [rbx+16]//b13 b12 b11 b10&lt;BR /&gt; movaps xmm7, [rbx+32]//b23 b22 b21 b20&lt;BR /&gt; movaps xmm8, [rbx+48]//b33 b32 b31 b30&lt;/P&gt;
&lt;P&gt; mulps xmm1, xmm5//a00b03 a00b02 a00b01 a00b00&lt;BR /&gt; mulps xmm2, xmm6//a01b13 a01b12 a01b11 a01b10&lt;BR /&gt; mulps xmm3, xmm7//a02b23 a02b22 a02b21 a02b20&lt;BR /&gt; mulps xmm4, xmm8//a03b33 a03b32 a03b31 a03b30&lt;BR /&gt; addps xmm1, xmm2&lt;BR /&gt; addps xmm3, xmm4&lt;BR /&gt; addps xmm1, xmm3&lt;BR /&gt; movaps [rdx], xmm1&lt;/P&gt;
&lt;P&gt; movaps xmm0, [rax+16]&lt;BR /&gt; pshufd xmm1, xmm0, 0x00 // a10 a10 a10 a10 &lt;BR /&gt; shufps xmm2, xmm0, 0x55 // a11 a11 a11 a11&lt;BR /&gt; shufps xmm3, xmm0, 0xcc // a11 a12 a12 a12&lt;BR /&gt; shufps xmm4, xmm0, 0xFF // a11 a13 a13 a13&lt;/P&gt;
&lt;P&gt; mulps xmm1, xmm5&lt;BR /&gt; mulps xmm2, xmm6&lt;BR /&gt; mulps xmm3, xmm7&lt;BR /&gt; mul
ps xmm4, xmm8&lt;BR /&gt; addps xmm1, xmm2&lt;BR /&gt; addps xmm3, xmm4&lt;BR /&gt; addps xmm1, xmm3&lt;BR /&gt; movaps [rdx+16], xmm1&lt;/P&gt;
&lt;P&gt; movaps xmm0, [rax+32]&lt;BR /&gt; pshufd xmm1, xmm0, 0x00 // a20 a20 a20 a20 &lt;BR /&gt; pshufd xmm2, xmm0, 0x55 // a21 a21 a21 a21&lt;BR /&gt; pshufd xmm3, xmm0, 0xcc // a21 a22 a22 a22&lt;BR /&gt; pshufd xmm4, xmm0, 0xFF // a21 a23 a23 a23&lt;/P&gt;
&lt;P&gt; mulps xmm1, xmm5&lt;BR /&gt; mulps xmm2, xmm6&lt;BR /&gt; mulps xmm3, xmm7&lt;BR /&gt; mulps xmm4, xmm8&lt;BR /&gt; addps xmm1, xmm2&lt;BR /&gt; addps xmm3, xmm4&lt;BR /&gt; addps xmm1, xmm3&lt;BR /&gt; movaps [rdx+32], xmm1&lt;/P&gt;
&lt;P&gt; movaps xmm0, [rax+48]&lt;BR /&gt; pshufd xmm1, xmm0, 0x00 // a30 a30 a30 a30 &lt;BR /&gt; pshufd xmm2, xmm0, 0x55 // a31 a31 a31 a31&lt;BR /&gt; pshufd xmm3, xmm0, 0xcc // a31 a32 a32 a32&lt;BR /&gt; pshufd xmm4, xmm0, 0xFF // a31 a33 a33 a33&lt;/P&gt;
&lt;P&gt; mulps xmm1, xmm5&lt;BR /&gt; mulps xmm2, xmm6&lt;BR /&gt; mulps xmm3, xmm7&lt;BR /&gt; mulps xmm4, xmm8&lt;BR /&gt; addps xmm1, xmm2&lt;BR /&gt; addps xmm3, xmm4&lt;BR /&gt; addps xmm1, xmm3&lt;BR /&gt; movaps [rdx+48], xmm1&lt;/P&gt;
&lt;P&gt; add rbx, 64&lt;BR /&gt; add rdx, 64&lt;/P&gt;
&lt;P&gt; sub ecx, 1&lt;BR /&gt; jg loop_a&lt;BR /&gt; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;</description>
      <pubDate>Fri, 04 Apr 2008 10:14:58 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909225#M2921</guid>
      <dc:creator>Mark_B_Intel1</dc:creator>
      <dc:date>2008-04-04T10:14:58Z</dc:date>
    </item>
    <item>
      <title>Re: Welcome to the Intel(R) AVX Forum!</title>
      <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909226#M2922</link>
      <description>&lt;P&gt;Hello again! Some more info about this was posted at the IDF website some time after my last entry! You can see the PDF here: &lt;A href="https://intel.wingateweb.com/SHchina/published/NGMS002/SP_NGMS002_100r_eng.pdf"&gt;https://intel.wingateweb.com/SHchina/published/NGMS002/SP_NGMS002_100r_eng.pdf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;But the follow up question will be, how can you know (looking at the Bytes in the code segment) if the instructions with C4H / C5H is the VEX prefix or the LES / LDS instruction? &lt;/P&gt;
&lt;P&gt;Knut&lt;/P&gt;</description>
      <pubDate>Fri, 04 Apr 2008 18:28:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909226#M2922</guid>
      <dc:creator>knujohn4</dc:creator>
      <dc:date>2008-04-04T18:28:26Z</dc:date>
    </item>
    <item>
      <title>Re: Welcome to the Intel(R) AVX Forum!</title>
      <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909227#M2923</link>
      <description>&lt;P&gt;The disassembler in the Linux binutils 2.18.50.0.6 or above:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.kernel.org/pub/linux/devel/binutils/"&gt;http://www.kernel.org/pub/linux/devel/binutils/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;supports AVX:&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;[hjl@gnu-6 avx-2]$ objdump -Mintel -dw x.o&lt;/P&gt;
&lt;P&gt;x.o: file format elf64-x86-64&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Disassembly of section .text:&lt;/P&gt;
&lt;P&gt;0000000000000000 &lt;FOO1&gt;:&lt;BR /&gt; 0: 55 push rbp&lt;BR /&gt; 1: 48 89 e5 mov rbp,rsp&lt;BR /&gt; 4: 48 83 ec 28 sub rsp,0x28&lt;BR /&gt; 8: c5 fc 29 45 a0 vmovaps YMMWORD PTR [rbp-0x60],ymm0&lt;BR /&gt; d: c5 fc 29 4d 80 vmovaps YMMWORD PTR [rbp-0x80],ymm1&lt;BR /&gt; 12: c5 fc 29 95 60 ff ff ff vmovaps YMMWORD PTR [rbp-0xa0],ymm2&lt;BR /&gt; 1a: c5 fc 28 45 80 vmovaps ymm0,YMMWORD PTR [rbp-0x80]&lt;BR /&gt; 1f: c5 fc 29 45 e0 vmovaps YMMWORD PTR [rbp-0x20],ymm0&lt;BR /&gt; 24: c5 fc 28 85 60 ff ff ff vmovaps ymm0,YMMWORD PTR [rbp-0xa0]&lt;BR /&gt; 2c: c5 fc 29 45 c0 vmovaps YMMWORD PTR [rbp-0x40],ymm0&lt;BR /&gt; 31: c5 fc 28 4d c0 vmovaps ymm1,YMMWORD PTR [rbp-0x40]&lt;BR /&gt; 36: c5 fc 28 45 e0 vmovaps ymm0,YMMWORD PTR [rbp-0x20]&lt;BR /&gt; 3b: c5 fc 58 c1 vaddps ymm0,ymm0,ymm1&lt;BR /&gt; 3f: c9 leave&lt;BR /&gt; 40: c3 ret&lt;/FOO1&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Apr 2008 21:50:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909227#M2923</guid>
      <dc:creator>HONGJIU_L_Intel</dc:creator>
      <dc:date>2008-04-08T21:50:55Z</dc:date>
    </item>
    <item>
      <title>Re: Welcome to the Intel(R) AVX Forum!</title>
      <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909228#M2924</link>
      <description>&lt;P&gt;LES/LDS cannot be encoded in 64-bit mode, that should make it easy to tell.&lt;/P&gt;
&lt;P&gt;In 32-bit modes, both LDS/LES require a modR/M byte.A VEX-encoded instructionin 32-bit mode would havebits 7 and 6 of the equivalent modR/M byte equal to 11B (corresponding to a reserved form of modR/M encoding for LDS/LES, or an illegal form of LDS/LES). You can infer this from the definition of VEX.R and VEX.vvvv in Figure 4-2 of the spec.&lt;/P&gt;</description>
      <pubDate>Wed, 09 Apr 2008 21:44:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909228#M2924</guid>
      <dc:creator>SHIH_K_Intel</dc:creator>
      <dc:date>2008-04-09T21:44:02Z</dc:date>
    </item>
    <item>
      <title>Re: Welcome to the Intel(R) AVX Forum!</title>
      <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909229#M2925</link>
      <description>&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;Here's the performance dataI promosed. For the two versions below (small bug fix from the snippet above), looking at throughput for something like an inlined C=A*B, I get 19.3 cycles per 4x4 matrix multiply for the SSE2 version and 13.8 cycles per matrix multiply for the Intel AVX version, or 1.4X. That's for everything hitting in the first level cache. (Disclaimers apply: it's a pre-silicon simulator and the product isn't out yet, so treat this with some skepticism). &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;In this case both the AVX and SSE2 version's performance is limited by the shuffles (the broadcasts andperms below are all shuffle operations)- theyall execute on the same port(along with the branch at the end and some fraction of the loop counter updates). And in this code I only do about 64 iterations of the loop so there is some small overhead in the benchmark. So if you unroll, performance of both versions increases slightly. Maybe more importantly, if you can reuse any of those shuffles, for example if you had to code up &lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Arial"&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial" size="2"&gt;C= A*B&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial" size="2"&gt;F= A*E&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Arial" size="2"&gt;You would get larger gains. In this case, our simultor shows the AVX version 23.4 cycles (per two 4x4 matrix multiplies) while the SSE2 baseline is 36.9, so 1.6X.&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" size="2"&gt;-----&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial" size="2"&gt;This is the Intel AVX version of a simple inlined 4x4 matrix multiply, Per call, it does 64 iterations of &lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial" size="2"&gt;C= A*B&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Arial"&gt;&lt;FONT color="#0000ff" size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;void&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Courier New"&gt; MMUL4x4_AVX()&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color="#0000ff" size="2"&gt;__asm&lt;/FONT&gt;&lt;FONT size="2"&gt; {&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;BLOCKQUOTE dir="ltr"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mov ecx, 1024/16&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rax, a&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rbx, b&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rdx, c&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;loop_a:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm9, [rbx] &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b03 b02 b01 b00 | b03 b02 b01 b00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm10, [rbx+16] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b13 b12 b11 b10 | b13 b12 b11 b10&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm11, [rbx+32] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b23 b22 b21 b20 | b23 b22 b21 b20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm12, [rbx+48] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b33 b32 b31 b30 | b33 b32 b31 b30&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps ymm0, [rax] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a13 a12 a11 a10 | a03 a02 a01 a00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm1, ymm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a
10 a10 a10 a10 | a00 a00 a00 a00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm2, ymm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a11 a11 a11 | a01 a01 a01 a01&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm3, ymm0, 0xCC &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a12 a12 a12 a12 | a01 a02 a02 a02&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm4, ymm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a13 a13 a13 a13 | a01 a03 a03 a03&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps ymm0, [rax+32] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a33 a32 a31 a30 | a23 a22 a21 a20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm5, ymm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a40 a30 a30 a30 | a20 a20 a20 a20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm6, ymm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a41 a31 a31 a31 | a21 a21 a21 a21&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm7, ymm0, 0xCC &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a42 a32 a32 a32 | a21 a22 a22 a22&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm8, ymm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a43 a33 a33 a33 | a21 a23 a23 a23&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm1, ymm1, ymm9&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm2, ymm2, ymm10&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm3, ymm3, ymm11&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm4, ymm4, ymm12&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm1, ymm1, ymm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm3, ymm3, ymm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm1, ymm1, ymm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm5, ymm5, ymm9&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm6, ymm6, ymm10&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm7, ymm7, ymm11&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm8, ymm8, ymm12&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm5, ymm5, ymm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm7, ymm7, ymm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm5, ymm5, ymm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps [rdx], ymm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps [rdx+32], ymm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rbx, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rdx, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;sub ecx, 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;jg loop_a&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New"&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;This is the Intel SSE2 version of a simple inlined 4x4 matrix multiply, Per call, it does 64 iterations of &lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;C= A*B&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;void&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Courier New"&gt; MMUL4x4_SSE()&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color="#0000ff" size="2"&gt;__asm&lt;/FONT&gt;&lt;FONT size="2"&gt; {&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;BLOCKQUOTE dir="ltr"&gt;&lt;FONT size="2"&gt;

&lt;P&gt;&lt;FONT face="Courier New"&gt;; each iteration does one matrix mul (16 elements)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mov ecx, 1024/16&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rax, a&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rbx, b&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rdx, c&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;loop_a:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a00 a00 a00 a00 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a01 a01 a01 a01&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a01 a02 a02 a02&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a01 a03 a03 a03&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm5, [rbx] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b03 b02 b01 b00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm6, [rbx+16] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b13 b12 b11 b10&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm7, [rbx+32] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b23 b22 b21 b20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm8, [rbx+48] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b33 b32 b31 b30&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a00b03 a00b02 a00b01 a00b00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a01b13 a01b12 a01b11 a01b10&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a02b23 a02b22 a02b21 a02b20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a03b33 a03b32 a03b31 a03b30&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdx], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax+16]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a10 a10 a10 a10 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a11 a11 a11&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a12 a12 a12&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a13 a13 a13&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT fac="" e="Courier New"&gt;mulps xmm2, xmm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdx+16], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax+32]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a20 a20 a20 a20 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a21 a21 a21 a21&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a21 a22 a22 a22&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a21 a23 a23 a23&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdx+32], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax+48]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a30 a30 a30 a30 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a31 a31 a31 a31&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a31 a32 a32 a32&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a31 a33 a33 a33&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdx+48], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rbx, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rdx, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;sub ecx, 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;jg loop_a&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;This is the Intel AVX version assuming you want to reuse the some of the reformatting associated with the left hand side matrix. Per call, it does 64 iterations of &lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;C= A*B&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;F= A*E&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;void&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Courier New"&gt; MMUL4x4_AVX_2()&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color="#0000ff" size="2"&gt;__asm&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Courier New"&gt; {&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;P&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mov ecx, 1024/16&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rax, a&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rbx, b&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rdx, c&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rsi, e&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rdi, f&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;loop_a:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps ymm0, [rax] &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a13 a12 a11 a10 | a03 a02 a01 a00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm1, ymm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a10 a10 a10 a10 | a00 a00 a00 a00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm2, ymm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a11 a11 a11 | a01 a01 a01 a01&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm3, ymm0, 0xCC &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a12 a12 a12 a12 | a01 a02 a02 a02&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm4, ymm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a13 a13 a13 a13 | a01 a03 a03 a03&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps ymm0, [rax+32] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a33 a32 a31 a30 | a23 a22 a21 a20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm5, ymm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a40 a30 a30 a30 | a20 a20 a20 a20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm6, ymm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a41 a31 a31 a31 | a21 a21 a21 a21&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm7, ymm0, 0xCC &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a42 a32 a32 a32 | a21 a22 a22 a22&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vpermilps ymm8, ymm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a43 a33 a33 a33 | a21 a23 a23 a23&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm9, [rbx] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b03 b02 b01 b00 | b03 b02 b01 b00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm10, [rbx+16] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b13 b12 b11 b10 | b13 b12 b11 b10&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm11, [rbx+32] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b23 b22 b21 b20 | b23 b22 b21 b20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm12, [rbx+48] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b33 b32 b31 b30 | b33 b32 b31 b30&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm0, ymm1, ymm9&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm13, ymm2, ymm10&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm0, ymm0, ymm13&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm13, ymm3, ymm11&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm14, ymm4, ymm12&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm13, ymm13, ymm14&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm0, ymm0, ymm13&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps [rdx], ymm0&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm0, ymm5, ymm9&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm13, ymm6, ymm10&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm0, ymm0, ymm13&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm13, ymm7, ymm11&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm14, ymm8, ymm12&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm13, ymm13, ymm14&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm0, ymm0, ymm13&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps [rdx+32], ymm0&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm9, [rsi] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b03 b02 b01 b00 | b03 b02 b01 b00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm10, [rsi+16] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b13 b12 b11 b10 | b13 b12 b11 b10&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm11, [rsi+32] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b23 b22 b21 b20 | b23 b22 b21 b20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vbroadcastf128 ymm12, [rsi+48] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// b33 b32 b31 b30 | b33 b32 b31 b30&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm1, ymm1, ymm9&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm2, ymm2, ymm10&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm3, ymm3, ymm11&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm4, ymm4, ymm12&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm1, ymm1, ymm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm3, ymm3, ymm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm1, ymm1, ymm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm5, ymm5, ymm9&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm6, ymm6, ymm10&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm7, ymm7, ymm11&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmulps ymm8, ymm8, ymm12&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm5, ymm5, ymm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm7, ymm7, ymm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vaddps ymm5, ymm5, ymm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps [rdi], ymm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;vmovaps [rdi+32], ymm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rbx, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rdx, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rsi, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rdi, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;sub ecx, 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;jg loop_a&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;This is theIntel SSE2 baseline version assuming you want to reuse the some of the reformatting associated with the left hand side matrix. Per call, it does 64 iterations of &lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Arial"&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;C= A*B&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Arial"&gt;F= A*E&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT face="Courier New"&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Courier New"&gt; MMUL4x4_SSE_2()&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Courier New"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr"&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color="#0000ff" size="2"&gt;__asm&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT face="Courier New"&gt; {&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mov ecx, 1024/16&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rax, a&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rbx, b&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rdx, c&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rsi, e&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;lea rdi, f&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;loop_a:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a00 a00 a00 a00 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a01 a01 a01 a01&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a01 a02 a02 a02&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a01 a03 a03 a03&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm5, [rbx] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b03 b02 b01 b00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm6, [rbx+16] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b13 b12 b11 b10&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm7, [rbx+32] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b23 b22 b21 b20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm8, [rbx+48] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b33 b32 b31 b30&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a00b03 a00b02 a00b01 a00b00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a01b13 a01b12 a01b11 a01b10&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a02b23 a02b22 a02b21 a02b20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a03b33 a03b32 a03b31 a03b30&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdx], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax+16]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a10 a10 a10 a10 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a11 a11 a11&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a12 a12 a12&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a13 a13 a13&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdx+16], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax+32]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a20 a20 a20 a20 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a21 a21 a21 a21&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a21 a22 a22 a22&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a21 a23 a23 a23&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdx+32], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax+48]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a30 a30 a30 a30 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a31 a31 a31 a31&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a31 a32 a32 a32&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a31 a33 a33 a33&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdx+48], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a00 a00 a00 a00 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a01 a01 a01 a01&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a01 a02 a02 a02&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a01 a03 a03 a03&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm5, [rsi] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b03 b02 b01 b00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm6, [rsi+16] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b13 b12 b11 b10&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm7, [rsi+32] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b23 b22 b21 b20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm8, [rsi+48] &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//b33 b32 b31 b30&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a00b03 a00b02 a00b01 a00b00&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a01b13 a01b12 a01b11 a01b10&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a02b23 a02b22 a02b21 a02b20&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;//a03b33 a03b32 a03b31 a03b30&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdi], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax+16]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a10 a10 a10 a10 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a11 a11 a11&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a12 a12 a12&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a11 a13 a13 a13&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdi+16], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax+32]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a20 a20 a20 a20 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a21 a21 a21 a21&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a21 a22 a22 a22&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a21 a23 a23 a23&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdi+32], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps xmm0, [rax+48]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm1, xmm0, 0x00 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a30 a30 a30 a30 &lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm2, xmm0, 0x55 &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a31 a31 a31 a31&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm3, xmm0, 0xcc &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a31 a32 a32 a32&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;pshufd xmm4, xmm0, 0xFF &lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT face="Courier New"&gt;// a31 a33 a33 a33&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm1, xmm5&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm2, xmm6&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm3, xmm7&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;mulps xmm4, xmm8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm2&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm3, xmm4&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;addps xmm1, xmm3&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;movaps [rdi+48], xmm1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rbx, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rdx, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rsi, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;add rdi, 64&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;sub ecx, 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;jg loop_a&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir="ltr"&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;</description>
      <pubDate>Mon, 21 Apr 2008 22:15:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909229#M2925</guid>
      <dc:creator>Mark_B_Intel1</dc:creator>
      <dc:date>2008-04-21T22:15:33Z</dc:date>
    </item>
    <item>
      <title>Re: Welcome to the Intel(R) AVX Forum!</title>
      <link>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909230#M2926</link>
      <description>&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;Hi Knut,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;Please see the response from our engineering below: &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;An example from the XED tool discussed at IDF (&lt;A href="https://intel.wingateweb.com/SHchina/published/NGMS002/SP_NGMS002_100r_eng.pdf"&gt;&lt;FONT color="#800080"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="https://intel.wingateweb.com/SHchina/published/NGMS002/SP_NGMS002_100r_eng.pdf" target="_blank"&gt;https://intel.wingateweb.com/SHchina/published/NGMS002/SP_NGMS002_100r_eng.pdf&lt;/A&gt;) is included below. For example, take a look at the first few bytes of VCMPPS. C5FCC2  the first byte is C4 or C5 (in 64-bit mode this is all thats required to know youre dealing with an AVX prefix); the second byte FC is the payoad; and C2 is the CMPPS opcode (same as before; subsequent bytes are also unchanged).&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="default"&gt;&lt;P&gt;&lt;FONT face="Verdana"&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;xed-i _mm256_cmpunord_ps.opt.vec.exe &amp;gt; dis&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;FONT face="Arial"&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;SYM subb:&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400a86: PUSH BASE 55       push rbp&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400a87: DATAXFER BASE 4889E5     mov rbp, rsp&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400a8a: LOGICAL BASE 4883E4E0   and rsp, 0xe0&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400a8e: DATAXFER BASE B8FFFFFFFF   mov eax, 0xffffffff&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400a93: DATAXFER BASE 89051F381000    mov dword ptr[rip+0x10381f], eax&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400a99: DATAXFER BASE 890525381000    mov dword ptr[rip+0x103825], eax&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400a9f: AVX AVXC5FC100511381000    &amp;amp;
nbsp; vmovups ymm0, ymmword ptr[rip+0x103811]&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400aa7: DATAXFER BASE 89053F381000    mov dword ptr[rip+0x10383f], eax&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400aad: DATAXFER BASE 890541381000    mov dword ptr[rip+0x103841], eax&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400ab3: AVX AVX C5FCC20D1C38100003    vcmpps ymm1, ymm0, ymmword ptr[rip+0x10381c], 0x3&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400abc: AVX AVX C5FC110D34381000     vmovups ymmword ptr[rip+0x103834], ymm1&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400ac4: LOGICAL BASE 33C0      xor eax, eax&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;SPAN&gt;&lt;FONT face="Arial"&gt;XDIS 400ac6: AVX AVX C5FA1080B8425000    vmovss xmm0, dword ptr[rax+0x5042b8]&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;FONT face="Arial"&gt;&lt;SPAN&gt;XDIS 400ace: LOGICAL BASE 33D2 xoredx, edx&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;FONT face="Arial"&gt;&lt;B&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="12"&gt;&lt;FONT face="Arial"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Apr 2008 05:02:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-ISA-Extensions/Welcome-to-the-Intel-R-AVX-Forum/m-p/909230#M2926</guid>
      <dc:creator>Quoc-Thai_L_Intel</dc:creator>
      <dc:date>2008-04-22T05:02:32Z</dc:date>
    </item>
  </channel>
</rss>

