Skip to content

lima/ppir: some lowering optimizations to save movs

Erico Nunes requested to merge enunes/mesa:lima-ppir-save-mov into master

Some lowering optimizations to save movs in ppir. These try to avoid inserting movs in cases where it is safe and relatively easy to do so. It seems to be that a large number of shaders fall into these easy to optimize cases.

No regressions on my piglit, deqp, shader-db tests.

instructions helped:   shader-db/tesseract/488.shader_test MESA_SHADER_FRAGMENT: 151 -> 150 (-0.66%)
instructions helped:   shader-db/unity/51.shader_test MESA_SHADER_FRAGMENT: 143 -> 142 (-0.70%)
instructions helped:   shader-db/0ad/12.shader_test MESA_SHADER_FRAGMENT: 118 -> 117 (-0.85%)
instructions helped:   shader-db/unity/99-Water.shader_test MESA_SHADER_FRAGMENT: 106 -> 105 (-0.94%)
instructions helped:   shader-db/glamor/85.shader_test MESA_SHADER_FRAGMENT: 161 -> 158 (-1.86%)
instructions helped:   shader-db/tesseract/238.shader_test MESA_SHADER_FRAGMENT: 47 -> 46 (-2.13%)
instructions helped:   shader-db/tesseract/241.shader_test MESA_SHADER_FRAGMENT: 47 -> 46 (-2.13%)
instructions helped:   shader-db/tesseract/235.shader_test MESA_SHADER_FRAGMENT: 47 -> 46 (-2.13%)
instructions helped:   shader-db/tesseract/232.shader_test MESA_SHADER_FRAGMENT: 47 -> 46 (-2.13%)
instructions helped:   shader-db/tesseract/223.shader_test MESA_SHADER_FRAGMENT: 39 -> 38 (-2.56%)
instructions helped:   shader-db/tesseract/229.shader_test MESA_SHADER_FRAGMENT: 39 -> 38 (-2.56%)
instructions helped:   shader-db/tesseract/220.shader_test MESA_SHADER_FRAGMENT: 39 -> 38 (-2.56%)
instructions helped:   shader-db/tesseract/226.shader_test MESA_SHADER_FRAGMENT: 39 -> 38 (-2.56%)
instructions helped:   shader-db/glamor/7.shader_test MESA_SHADER_FRAGMENT: 108 -> 105 (-2.78%)
instructions helped:   shader-db/yofrankie/51.shader_test MESA_SHADER_FRAGMENT: 36 -> 35 (-2.78%)
instructions helped:   shader-db/glamor/88.shader_test MESA_SHADER_FRAGMENT: 106 -> 103 (-2.83%)
instructions helped:   shader-db/glmark/1-11.shader_test MESA_SHADER_FRAGMENT: 34 -> 33 (-2.94%)
instructions helped:   shader-db/warzone2100/1.shader_test MESA_SHADER_FRAGMENT: 66 -> 64 (-3.03%)
instructions helped:   shader-db/humus-portals/1.shader_test MESA_SHADER_FRAGMENT: 33 -> 32 (-3.03%)
instructions helped:   shader-db/yofrankie/27.shader_test MESA_SHADER_FRAGMENT: 33 -> 32 (-3.03%)
instructions helped:   shader-db/yofrankie/48.shader_test MESA_SHADER_FRAGMENT: 32 -> 31 (-3.12%)
instructions helped:   shader-db/tesseract/214.shader_test MESA_SHADER_FRAGMENT: 31 -> 30 (-3.23%)
instructions helped:   shader-db/tesseract/211.shader_test MESA_SHADER_FRAGMENT: 31 -> 30 (-3.23%)
instructions helped:   shader-db/tesseract/208.shader_test MESA_SHADER_FRAGMENT: 31 -> 30 (-3.23%)
instructions helped:   shader-db/tesseract/217.shader_test MESA_SHADER_FRAGMENT: 31 -> 30 (-3.23%)
instructions helped:   shader-db/glmark/1-7.shader_test MESA_SHADER_FRAGMENT: 30 -> 29 (-3.33%)
instructions helped:   shader-db/tesseract/205.shader_test MESA_SHADER_FRAGMENT: 23 -> 22 (-4.35%)
instructions helped:   shader-db/tesseract/196.shader_test MESA_SHADER_FRAGMENT: 23 -> 22 (-4.35%)
instructions helped:   shader-db/tesseract/199.shader_test MESA_SHADER_FRAGMENT: 23 -> 22 (-4.35%)
instructions helped:   shader-db/tesseract/202.shader_test MESA_SHADER_FRAGMENT: 23 -> 22 (-4.35%)
instructions helped:   shader-db/glmark/22-1.shader_test MESA_SHADER_FRAGMENT: 91 -> 87 (-4.40%)
instructions helped:   shader-db/glmark/1-10.shader_test MESA_SHADER_FRAGMENT: 22 -> 21 (-4.55%)
instructions helped:   shader-db/yofrankie/87.shader_test MESA_SHADER_FRAGMENT: 22 -> 21 (-4.55%)
instructions helped:   shader-db/unity/286-PostFXHeightFog.shader_test MESA_SHADER_FRAGMENT: 42 -> 40 (-4.76%)
instructions helped:   shader-db/glmark/13-1.shader_test MESA_SHADER_FRAGMENT: 38 -> 36 (-5.26%)
instructions helped:   shader-db/glmark/1-24.shader_test MESA_SHADER_FRAGMENT: 57 -> 54 (-5.26%)
instructions helped:   shader-db/yofrankie/39.shader_test MESA_SHADER_FRAGMENT: 19 -> 18 (-5.26%)
instructions helped:   shader-db/yofrankie/21.shader_test MESA_SHADER_FRAGMENT: 19 -> 18 (-5.26%)
instructions helped:   shader-db/glamor/82.shader_test MESA_SHADER_FRAGMENT: 53 -> 50 (-5.66%)
instructions helped:   shader-db/glmark/1-9.shader_test MESA_SHADER_FRAGMENT: 16 -> 15 (-6.25%)
instructions helped:   shader-db/glmark/1-8.shader_test MESA_SHADER_FRAGMENT: 42 -> 39 (-7.14%)
instructions helped:   shader-db/glmark/7-3.shader_test MESA_SHADER_FRAGMENT: 14 -> 13 (-7.14%)
instructions helped:   shader-db/tesseract/193.shader_test MESA_SHADER_FRAGMENT: 14 -> 13 (-7.14%)
instructions helped:   shader-db/tesseract/184.shader_test MESA_SHADER_FRAGMENT: 14 -> 13 (-7.14%)
instructions helped:   shader-db/tesseract/187.shader_test MESA_SHADER_FRAGMENT: 14 -> 13 (-7.14%)
instructions helped:   shader-db/tesseract/190.shader_test MESA_SHADER_FRAGMENT: 14 -> 13 (-7.14%)
instructions helped:   shader-db/unity/50.shader_test MESA_SHADER_FRAGMENT: 354 -> 326 (-7.91%)
instructions helped:   shader-db/yofrankie/9.shader_test MESA_SHADER_FRAGMENT: 12 -> 11 (-8.33%)
instructions helped:   shader-db/glmark/1-18.shader_test MESA_SHADER_FRAGMENT: 10 -> 9 (-10.00%)
instructions helped:   shader-db/tesseract/178.shader_test MESA_SHADER_FRAGMENT: 10 -> 9 (-10.00%)
instructions helped:   shader-db/tesseract/175.shader_test MESA_SHADER_FRAGMENT: 10 -> 9 (-10.00%)
instructions helped:   shader-db/tesseract/172.shader_test MESA_SHADER_FRAGMENT: 10 -> 9 (-10.00%)
instructions helped:   shader-db/tesseract/181.shader_test MESA_SHADER_FRAGMENT: 10 -> 9 (-10.00%)
instructions helped:   shader-db/glamor/74.shader_test MESA_SHADER_FRAGMENT: 19 -> 16 (-15.79%)
instructions helped:   shader-db/tesseract/160.shader_test MESA_SHADER_FRAGMENT: 6 -> 5 (-16.67%)
instructions helped:   shader-db/tesseract/169.shader_test MESA_SHADER_FRAGMENT: 6 -> 5 (-16.67%)
instructions helped:   shader-db/tesseract/163.shader_test MESA_SHADER_FRAGMENT: 6 -> 5 (-16.67%)
instructions helped:   shader-db/tesseract/166.shader_test MESA_SHADER_FRAGMENT: 6 -> 5 (-16.67%)
instructions helped:   shader-db/glmark/1-26.shader_test MESA_SHADER_FRAGMENT: 22 -> 17 (-22.73%)
instructions helped:   shader-db/glamor/73.shader_test MESA_SHADER_FRAGMENT: 11 -> 8 (-27.27%)
instructions helped:   shader-db/glmark/10-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/7-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-14.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/4-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-23.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-5.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/25-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-1.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/glmark/1-20.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/45.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/33.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/12.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/24.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/tesseract/154.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)
instructions helped:   shader-db/sauerbraten/5.shader_test MESA_SHADER_FRAGMENT: 2 -> 1 (-50.00%)

total instructions in shared programs: 17189 -> 17061 (-0.74%)
instructions in affected programs: 2730 -> 2602 (-4.69%)
helped: 75
HURT: 0
helped stats (abs) min: 1 max: 28 x̄: 1.71 x̃: 1
helped stats (rel) min: 0.66% max: 50.00% x̄: 14.98% x̃: 5.26%
95% mean confidence interval for instructions value: -2.44 -0.97
95% mean confidence interval for instructions %-change: -19.19% -10.78%
Instructions are helped.

total loops in shared programs: 3 -> 3 (0.00%)
loops in affected programs: 0 -> 0
helped: 0
HURT: 0

total spills in shared programs: 197 -> 197 (0.00%)
spills in affected programs: 0 -> 0
helped: 0
HURT: 0

total fills in shared programs: 766 -> 766 (0.00%)
fills in affected programs: 0 -> 0
helped: 0
HURT: 0

LOST:   0
GAINED: 0

Merge request reports