HomePhabricator

[SLP] Fix for PR32036: Vectorized horizontal reduction returning wrong result

Authored by ABataev on Feb 23 2017, 1:40 AM.

Description

[SLP] Fix for PR32036: Vectorized horizontal reduction returning wrong result

Summary:
If the same value is used several times as an extra value, SLP
vectorizer takes it into account only once instead of actual number of
using.
For example:

int val = 1;
for (int y = 0; y < 8; y++) {
  for (int x = 0; x < 8; x++) {
    val = val + input[y * 8 + x] + 3;
  }
}

We have 2 extra rguments: 1 - initial value of horizontal reduction
and 3, which is added 8*8 times to the reduction. Before the patch we
added 1 to the reduction value and added once 3, though it must be
added 64 times.

Reviewers: mkuper, mzolotukhin

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D30262

llvm-svn: 295949

Details

Committed
ABataevFeb 23 2017, 1:40 AM
Differential Revision
D30262: [SLP] Fix for PR32036: Vectorized horizontal reduction returning wrong result
Parents
rG39af790bb1eb: Revert r295944.
Branches
Unknown
Tags
Unknown