Bug 89315

Summary: [HSW, regression, bisected] i965/fs: Emit MAD instructions when possible.
Product: Mesa Reporter: Iago Toral <itoral>
Component: Drivers/DRI/i965Assignee: Matt Turner <mattst88>
Status: RESOLVED FIXED QA Contact: Intel 3D Bugs Mailing List <intel-3d-bugs>
Severity: normal    
Priority: medium CC: itoral, siglesias
Version: gitKeywords: patch
Hardware: Other   
OS: All   
URL: http://lists.freedesktop.org/archives/mesa-dev/2015-February/078057.html
Whiteboard:
i915 platform: i915 features:

Description Iago Toral 2015-02-25 07:44:58 UTC
Steps to reproduce:

$ cd <deqp-home>
$ cd modules/gles3
$ ./deqp-gles3 -n dEQP-GLES3.functional.shaders.matrix.mul.const.lowp_mat3_float_fragment

(...)
Test run totals:
  Passed:        0/1 (0.0%)
  Failed:        1/1 (100.0%)
  Not supported: 0/1 (0.0%)
  Warnings:      0/1 (0.0%)

The complete list of affected dEQP tests is:

dEQP-GLES3.functional.shaders.matrix.mul.const.lowp_mat3_float_fragment
dEQP-GLES3.functional.shaders.matrix.mul.const.lowp_mat3_vec3_fragment
dEQP-GLES3.functional.shaders.matrix.mul.const.mediump_mat3_float_fragment
dEQP-GLES3.functional.shaders.matrix.mul.const.mediump_mat3_vec3_fragment
dEQP-GLES3.functional.shaders.matrix.mul.const.highp_mat3_float_fragment
dEQP-GLES3.functional.shaders.matrix.mul.const.highp_mat3_vec3_fragment
dEQP-GLES3.functional.shaders.matrix.mul.const.lowp_vec3_mat4x3_fragment
dEQP-GLES3.functional.shaders.matrix.mul.const.mediump_vec3_mat4x3_fragment
dEQP-GLES3.functional.shaders.matrix.mul.const.highp_vec3_mat4x3_fragment
dEQP-GLES3.functional.shaders.matrix.div.const.lowp_mat3_float_fragment
dEQP-GLES3.functional.shaders.matrix.div.const.mediump_mat3_float_fragment
dEQP-GLES3.functional.shaders.matrix.div.const.highp_mat3_float_fragment
dEQP-GLES3.functional.shaders.random.conditionals.fragment.51

The commit that introduced the regression is:

commit 8cfd1e2ac6b0d509d34c7d155a95016cd80338ed
Author: Matt Turner <mattst88@gmail.com>
Date:   Sun Oct 26 22:08:15 2014 -0700

    i965/fs: Emit MAD instructions when possible.
    
    Previously we didn't emit MAD instructions since they cannot take
    immediate arguments, but with the opt_combine_constants() pass we can
    handle this properly.
    
    total instructions in shared programs: 5920017 -> 5733278 (-3.15%)
    instructions in affected programs:     3625153 -> 3438414 (-5.15%)
    helped:                                22017
    HURT:                                  870
    GAINED:                                91
    LOST:                                  49
    
    Without constant pooling, this patch is a complete loss:
    
    total instructions in shared programs: 5912589 -> 5987888 (1.27%)
    instructions in affected programs:     3190050 -> 3265349 (2.36%)
    helped:                                1564
    HURT:                                  17827
    GAINED:                                27
    LOST:                                  101
    
    And since the constant pooling patch by itself hurt a bunch of things,
    from before constant pooling to this patch the results are:
    
    total instructions in shared programs: 5895414 -> 5747946 (-2.50%)
    instructions in affected programs:     3617993 -> 3470525 (-4.08%)
    helped:                                20478
    HURT:                                  4469
    GAINED:                                54
    LOST:                                  146
    
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Comment 1 Matt Turner 2015-02-27 19:02:37 UTC
I'll send a patch for this shortly.
Comment 2 Matt Turner 2015-02-27 19:36:41 UTC
Patch sent to the mailing list.
Comment 3 Matt Turner 2015-02-28 04:25:15 UTC
Should be fixed by:

commit d528907fd2950c7bb968fff66dd79863cd128890
Author: Matt Turner <mattst88@gmail.com>
Date:   Fri Feb 27 10:59:17 2015 -0800

    i965: Avoid applying negate to wrong MAD source.
Comment 4 Iago Toral 2015-03-02 09:43:28 UTC
(In reply to Matt Turner from comment #3)
> Should be fixed by:
> 
> commit d528907fd2950c7bb968fff66dd79863cd128890
> Author: Matt Turner <mattst88@gmail.com>
> Date:   Fri Feb 27 10:59:17 2015 -0800
> 
>     i965: Avoid applying negate to wrong MAD source.

Right, the affected tests are now passing again with master. Thanks Matt.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.