<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Over 15% performance lost on large branching shader"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=110412#c4">Comment # 4</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Over 15% performance lost on large branching shader"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=110412">bug 110412</a>
              from <span class="vcard"><a class="email" href="mailto:eero.t.tamminen@intel.com" title="Eero Tamminen <eero.t.tamminen@intel.com>"> <span class="fn">Eero Tamminen</span></a>
</span></b>
        <pre>Looking at the attached shader assembly...

Mesa 18.2:
SIMD8 shader: 2413 instructions. 11 loops. 131452 cycles. 0:0 spills:fills.
Promoted 15 constants. Compacted 38608 to 27856 bytes (28%)

Mesa git:
SIMD8 shader: 2388 instructions. 11 loops. 120307 cycles. 0:0 spills:fills.
Promoted 14 constants. Compacted 38208 to 27392 bytes (28%)

=> Both versions reach only SIMD8 and new version uses less instructions.

Loops in git version are shorter, except for last two which are marginally
longer:

Mesa 18.2:
while(8)        JIP: -216                                       { align1 1Q };
while(8)        JIP: -216                                       { align1 1Q };
while(8)        JIP: -216                                       { align1 1Q };
while(8)        JIP: -216                                       { align1 1Q };
while(8)        JIP: -216                                       { align1 1Q };
while(8)        JIP: -216                                       { align1 1Q };
while(8)        JIP: -216                                       { align1 1Q };
while(8)        JIP: -296                                       { align1 1Q };
while(8)        JIP: -4496                                      { align1 1Q };
while(8)        JIP: -1136                                      { align1 1Q };
while(8)        JIP: -1136                                      { align1 1Q };

Mesa git:
while(8)        JIP: -200                                       { align1 1Q };
while(8)        JIP: -200                                       { align1 1Q };
while(8)        JIP: -200                                       { align1 1Q };
while(8)        JIP: -200                                       { align1 1Q };
while(8)        JIP: -200                                       { align1 1Q };
while(8)        JIP: -200                                       { align1 1Q };
while(8)        JIP: -200                                       { align1 1Q };
while(8)        JIP: -288                                       { align1 1Q };
while(8)        JIP: -4424                                      { align1 1Q };
while(8)        JIP: -1144                                      { align1 1Q };
while(8)        JIP: -1144                                      { align1 1Q };

At maximum, old code seems to have 61 live regs, new one 62.

Both Mesa and my own (crappy) ISA analyzer think that the new version (which
has more lrp & mad reg bank conflicts) should use less cycles, but in branching
code that can't really be predicted as it depends so much on which branches get
selected.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>