diff options
author | Kenneth Graunke <[email protected]> | 2016-04-06 22:34:39 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2016-04-11 18:43:55 -0700 |
commit | 5886cd79a0ed10b887840f6afb980a5a6a47e26e (patch) | |
tree | 6c994bb93e9255240ab9c766f54084ad9514319e /.gitignore | |
parent | 1c7ba7f15646367006d615180e89d5ea34a3d5f6 (diff) |
nir: Do basic constant reassociation.
Many shaders contain expression trees of the form:
const_1 * (value * const_2)
Reorganizing these to
(const_1 * const_2) * value
will allow constant folding to combine the constants. Sometimes, these
constants are 2 and 0.5, so we can remove a multiply altogether. Other
times, it can create more immediate constants, which can actually hurt.
Finding a good balance here is tricky. While much more could be done,
this simple patch seems to have a lot of positive benefit while having
a low downside.
shader-db results on Broadwell:
total instructions in shared programs: 8963768 -> 8961369 (-0.03%)
instructions in affected programs: 438318 -> 435919 (-0.55%)
helped: 1502
HURT: 245
total cycles in shared programs: 71527354 -> 71421516 (-0.15%)
cycles in affected programs: 11541788 -> 11435950 (-0.92%)
helped: 3445
HURT: 1224
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Eduardo Lima Mitev <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions