<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>