intel/fs: Lower integer multiply correctly when destination stride equals 4.
authorFrancisco Jerez <currojerez@riseup.net>
Thu, 17 Jan 2019 03:01:04 +0000 (19:01 -0800)
committerFrancisco Jerez <currojerez@riseup.net>
Thu, 21 Feb 2019 22:07:25 +0000 (14:07 -0800)
commite2f475ddffabff5cbe2bcff78ff42ce899869b29
tree4863f8441d8a398fa2b72a798c0575563fa3db4b
parentc3c27762f787a93ee3f27189bef8d7cdcb3a6cab
intel/fs: Lower integer multiply correctly when destination stride equals 4.

Because the "low" temporary needs to be accessed with word type and
twice the original stride, attempting to preserve the alignment of the
original destination can potentially lead to instructions with illegal
destination stride greater than four.  Because the CHV/BXT alignment
restrictions are now being enforced by the regioning lowering pass run
after lower_integer_multiplication(), there is no real need to
preserve the original strides anymore.

Note that this bug can be reproduced on stable branches, but
back-porting would be non-trivial, because the fix relies on the
regioning lowering pass recently introduced.

Tested-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/compiler/brw_fs.cpp