diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2017-02-23 10:57:15 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2017-02-23 10:57:15 +0000 |
commit | 7ae653285d07fb7a40e243adef9b4f9389ea0417 (patch) | |
tree | 330a48307c8a857f8e4ba68bad03175f2185022d /llvm/lib/CodeGen/MachineScheduler.cpp | |
parent | c29f7ff33464f14663c21b4d35a038a79189c709 (diff) | |
download | llvm-7ae653285d07fb7a40e243adef9b4f9389ea0417.zip llvm-7ae653285d07fb7a40e243adef9b4f9389ea0417.tar.gz llvm-7ae653285d07fb7a40e243adef9b4f9389ea0417.tar.bz2 |
[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: 295956
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
0 files changed, 0 insertions, 0 deletions