diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2019-01-09 20:40:18 -0800 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2019-01-23 17:53:01 +0000 |
commit | 612e4c5233c489603165f046d2d76935153b4169 (patch) | |
tree | f15137e55fe8f02f6a67a5702b301b8e22ae192d /src/corelib/serialization | |
parent | 07580a8d7bc92085c7585e3cbe447562bf28ab85 (diff) |
Use VPMASKMOV in the epilogue ARGB->ARGB{32,64} AVX2 epilogues
Instead of stepping down to 4 pixels, then 2 px, then 1, with
essentially the same code, let's use maskload and maskstore to only load
and store the effective portions (instructions new in AVX2). The
secondary loop gets run at most twice, since there can be at most 7
pixels left.
This fixes an off-by-4 bug in the previous implementation (lines 1041
and 1186 should have had 7 instead of 3).
Change-Id: I4d4dadb709f1482fa8ccfffd157862e77ac508f6
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/corelib/serialization')
0 files changed, 0 insertions, 0 deletions