<div dir="auto">I've hated this pass for quite a while. It is necessary for nv30 but is actively harmful for nv50+ due to the undef issue nha points out. I haven't looked closely at the impl details, but the idea is acked-by me.</div><div class="gmail_extra"><br><div class="gmail_quote">On Apr 25, 2017 5:44 AM, "Samuel Pitoiset" <<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
On 04/25/2017 08:47 AM, Nicolai Hähnle wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Interesting find. Is this in shaders with control flow? Perhaps with this change, there are now more undefs in places that previously had a phi with an unrelated use of the same TGSI temporary. Anyway, patches 1-3:<br>
</blockquote>
<br>
Yes. Looks like some shaders have a complex control flow.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Reviewed-by: Nicolai Hähnle <<a href="mailto:nicolai.haehnle@amd.com" target="_blank">nicolai.haehnle@amd.com</a>><br>
<br>
<br>
On <a href="tel:25.04.2017%2000" value="+12504201700" target="_blank">25.04.2017 00</a>:31, Samuel Pitoiset wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
47109 shaders in 29632 tests<br>
Totals:<br>
SGPRS: 1917364 -> 1916620 (-0.04 %)<br>
VGPRS: 1165802 -> 1165202 (-0.05 %)<br>
Spilled SGPRs: 1880 -> 1843 (-1.97 %)<br>
Spilled VGPRs: 70 -> 65 (-7.14 %)<br>
Private memory VGPRs: 1184 -> 1184 (0.00 %)<br>
Scratch size: 1312 -> 1308 (-0.30 %) dwords per thread<br>
Code Size: 60211356 -> 60192268 (-0.03 %) bytes<br>
LDS: 1077 -> 1077 (0.00 %) blocks<br>
Max Waves: 428597 -> 428674 (0.02 %)<br>
Wait states: 0 -> 0 (0.00 %)<br>
<br>
Totals from affected shaders:<br>
SGPRS: 238173 -> 237429 (-0.31 %)<br>
VGPRS: 149556 -> 148956 (-0.40 %)<br>
Spilled SGPRs: 1263 -> 1226 (-2.93 %)<br>
Spilled VGPRs: 25 -> 20 (-20.00 %)<br>
Private memory VGPRs: 0 -> 0 (0.00 %)<br>
Scratch size: 20 -> 16 (-20.00 %) dwords per thread<br>
Code Size: 10457904 -> 10438816 (-0.18 %) bytes<br>
LDS: 50 -> 50 (0.00 %) blocks<br>
Max Waves: 41283 -> 41360 (0.19 %)<br>
Wait states: 0 -> 0 (0.00 %)<br>
<br>
Signed-off-by: Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com" target="_blank">samuel.pitoiset@gmail.com</a>><br>
---<br>
 src/gallium/drivers/radeonsi/<wbr>si_pipe.c | 2 +-<br>
 1 file changed, 1 insertion(+), 1 deletion(-)<br>
<br>
diff --git a/src/gallium/drivers/radeonsi<wbr>/si_pipe.c b/src/gallium/drivers/radeonsi<wbr>/si_pipe.c<br>
index 2a11607c90..cfbcbe2b74 100644<br>
--- a/src/gallium/drivers/radeonsi<wbr>/si_pipe.c<br>
+++ b/src/gallium/drivers/radeonsi<wbr>/si_pipe.c<br>
@@ -680,6 +680,7 @@ static int si_get_shader_param(struct pipe_screen* pscreen,<br>
     case PIPE_SHADER_CAP_INTEGERS:<br>
     case PIPE_SHADER_CAP_TGSI_FMA_SUPPO<wbr>RTED:<br>
     case PIPE_SHADER_CAP_TGSI_ANY_INOUT<wbr>_DECL_RANGE:<br>
+    case PIPE_SHADER_CAP_TGSI_SKIP_MERG<wbr>E_REGISTERS:<br>
         return 1;<br>
<br>
     case PIPE_SHADER_CAP_INDIRECT_INPUT<wbr>_ADDR:<br>
@@ -693,7 +694,6 @@ static int si_get_shader_param(struct pipe_screen* pscreen,<br>
     case PIPE_SHADER_CAP_SUPPORTED_IRS:<br>
     case PIPE_SHADER_CAP_TGSI_DROUND_SU<wbr>PPORTED:<br>
     case PIPE_SHADER_CAP_TGSI_DFRACEXP_<wbr>DLDEXP_SUPPORTED:<br>
-    case PIPE_SHADER_CAP_TGSI_SKIP_MERG<wbr>E_REGISTERS:<br>
         return 0;<br>
     }<br>
     return 0;<br>
<br>
</blockquote>
<br>
<br>
</blockquote>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</blockquote></div></div>