Bug 89315 - [HSW, regression, bisected] i965/fs: Emit MAD instructions when possible.
Summary: [HSW, regression, bisected] i965/fs: Emit MAD instructions when possible.
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Matt Turner
QA Contact: Intel 3D Bugs Mailing List
URL: http://lists.freedesktop.org/archives...
Whiteboard:
Keywords: patch
Depends on:
Blocks:
 
Reported: 2015-02-25 07:44 UTC by Iago Toral
Modified: 2015-03-02 09:43 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.


bug/show.html.tmpl processed on Mar 26, 2017 at 03:25:27.
(provided by the Example extension).