Page MenuHomePhabricator

anton-afanasyev (Anton Afanasyev)
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 30 2018, 2:53 PM (120 w, 6 d)

Recent Activity

Tue, Jan 19

anton-afanasyev updated the diff for D94974: [SLP] Try doubled MaxElts for stores vectorization.

Fixed comment containing this D94974 revision number

Tue, Jan 19, 8:21 AM · Restricted Project
anton-afanasyev requested review of D94974: [SLP] Try doubled MaxElts for stores vectorization.
Tue, Jan 19, 8:19 AM · Restricted Project

Mon, Jan 18

anton-afanasyev added a comment to D94713: Do not traverse ConstantData use-list in SLPVectorizer.

You are planning to revert this patch after ConstantData use-list removing, am I right?

Mon, Jan 18, 2:24 AM · Restricted Project

Wed, Jan 13

anton-afanasyev accepted D94446: [SLP] Don't vectorize stores of non-packed types (like i1, i2).

Yes, thanks.

Wed, Jan 13, 3:52 PM · Restricted Project

Tue, Jan 12

anton-afanasyev added a comment to D94446: [SLP] Don't vectorize stores of non-packed types (like i1, i2).

Looks good, but could you please precommit test (and rebase) to see actual output difference?

Tue, Jan 12, 7:19 AM · Restricted Project

Mon, Jan 4

anton-afanasyev accepted D93967: [SLP]Need shrink the load vector after reordering..

LGTM

Mon, Jan 4, 6:59 AM · Restricted Project

Fri, Jan 1

anton-afanasyev added inline comments to D93967: [SLP]Need shrink the load vector after reordering..
Fri, Jan 1, 9:26 AM · Restricted Project

Dec 18 2020

anton-afanasyev added a comment to D93192: [SLP] Fix vector element size for the store chains.

In-short: I'm still do sure that current patch is bugfixing. But this bug had induced some of boundary vectorization cases before fixing. Below is a typical case.

Dec 18 2020, 8:06 AM · Restricted Project

Dec 14 2020

anton-afanasyev added a comment to D93192: [SLP] Fix vector element size for the store chains.
Dec 14 2020, 8:47 AM · Restricted Project
anton-afanasyev committed rGfac7c7ec3ccd: [SLP] Fix vector element size for the store chains (authored by anton-afanasyev).
[SLP] Fix vector element size for the store chains
Dec 14 2020, 4:54 AM
anton-afanasyev closed D93192: [SLP] Fix vector element size for the store chains.
Dec 14 2020, 4:54 AM · Restricted Project

Dec 13 2020

anton-afanasyev committed rGb8c847ee731b: [SLP][Test] Precommit test for D93192 (authored by anton-afanasyev).
[SLP][Test] Precommit test for D93192
Dec 13 2020, 10:27 PM
anton-afanasyev requested review of D93192: [SLP] Fix vector element size for the store chains.
Dec 13 2020, 10:22 PM · Restricted Project

Dec 9 2020

anton-afanasyev committed rGe5bf2e898946: [SLP] Use the width of value truncated just before storing (authored by anton-afanasyev).
[SLP] Use the width of value truncated just before storing
Dec 9 2020, 5:39 AM
anton-afanasyev closed D92824: [SLP] Use the width of value truncated just before storing.
Dec 9 2020, 5:39 AM · Restricted Project
anton-afanasyev added a comment to D57059: [SLP] Initial support for the vectorization of the non-power-of-2 vectors..

AFAICT the only outstanding question is whether the compile time increase is acceptable?

Dec 9 2020, 4:58 AM · Restricted Project

Dec 8 2020

anton-afanasyev added inline comments to D92824: [SLP] Use the width of value truncated just before storing.
Dec 8 2020, 7:06 AM · Restricted Project
anton-afanasyev added a comment to D92824: [SLP] Use the width of value truncated just before storing.

@anton-afanasyev Please can you rebase? I added extra test coverage in rG41d0666391131ddee451085c72ba6513872e7f6c

Dec 8 2020, 6:15 AM · Restricted Project
anton-afanasyev updated the diff for D92824: [SLP] Use the width of value truncated just before storing.

Rebase

Dec 8 2020, 6:11 AM · Restricted Project
anton-afanasyev planned changes to D91919: [SLP] Make SLPVectorizer to use `llvm.masked.scatter` intrinsic.

Actually NFC now, since stores could be only seed entry, but we collect only consecutive stores there for now. It will be changed in future commits.

Are you looking at supporting non-consecutive stores? This patch probably shouldn't be reviewed until we actually have something that uses and tests it.

Dec 8 2020, 4:57 AM · Restricted Project
anton-afanasyev added inline comments to D92824: [SLP] Use the width of value truncated just before storing.
Dec 8 2020, 2:12 AM · Restricted Project
anton-afanasyev requested review of D92824: [SLP] Use the width of value truncated just before storing.
Dec 8 2020, 1:59 AM · Restricted Project
anton-afanasyev committed rG6c3f56efa6e6: [SLP][Test] Differentiate SSE/AVX512 test coverage (NFC) (authored by anton-afanasyev).
[SLP][Test] Differentiate SSE/AVX512 test coverage (NFC)
Dec 8 2020, 1:02 AM

Dec 7 2020

anton-afanasyev committed rG50bff64158e9: [SLP][Test] Add test for PR46983 (authored by anton-afanasyev).
[SLP][Test] Add test for PR46983
Dec 7 2020, 10:08 AM
anton-afanasyev added inline comments to D57779: [SLP] Add support for throttling..
Dec 7 2020, 8:43 AM · Restricted Project
anton-afanasyev accepted D92668: [SLP]Merge reorder and reuse shuffles..

Looks good to me, just one style remark: we have newlines between function members for all classes throughout this module, so I'd prefer to see the same for ShuffleInstructionBuilder class.

Dec 7 2020, 7:00 AM · Restricted Project
anton-afanasyev added inline comments to D92668: [SLP]Merge reorder and reuse shuffles..
Dec 7 2020, 6:50 AM · Restricted Project
anton-afanasyev added inline comments to D92668: [SLP]Merge reorder and reuse shuffles..
Dec 7 2020, 6:37 AM · Restricted Project

Dec 5 2020

anton-afanasyev added a comment to D92701: [SLPVectorize] Call isLegalMaskedGather before creating a gather TreeEntry.

I'm agree with @fhahn -- tuning cost model is more right way. Also it could be the case of arch where gathers are missing but it's beneficial to use them for vectorization tree building. They are lowered to scalarized instrs further.

Dec 5 2020, 3:01 AM · Restricted Project

Dec 4 2020

anton-afanasyev added a comment to D92668: [SLP]Merge reorder and reuse shuffles..

The same work will be done by instcombine, so we can just zero redundant cost here to gain the same effect globally. But it makes sense to make shuffle merging at the vectorization stage as well, of course.

Dec 4 2020, 2:09 PM · Restricted Project

Dec 1 2020

anton-afanasyev updated subscribers of D57059: [SLP] Initial support for the vectorization of the non-power-of-2 vectors..

Btw, I've observed significant compile-time regression with this patch: http://llvm-compile-time-tracker.com/compare.php?from=99d82412f822190a6caa3e3a5b9f87b71f56de47&to=81b636bae72c967f526bcd18de45a6f4a76daa41&stat=instructions (thanks to @nikic for awesome service). This could be justified in case of comparable performance improvements but have you done any benchmarking?

Dec 1 2020, 3:29 PM · Restricted Project

Nov 25 2020

anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

It sounds like throttling patch should resolve this issue as cutting out ScatterVectorize entry with high cost will effectively return to previous behavior.

Nov 25 2020, 10:02 AM · Restricted Project
anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Talked with @dtemirbulatov privately and reached a consensus that his patch reviews.llvm.org/D57779 fixes the issue defined above by @vdmitrie in general.

Nov 25 2020, 7:54 AM · Restricted Project
anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Current SLP has significant drawback with regard to its cost modeling. And this patch highlights it.
Consider we have four scalar loads of i8 type. With prior approach (vectorization overhead) we had cost for such entry 4 (x86 target).
With this new approach we have two entries instead of one: ScatterVectorize loads + NeedToGather GEPs. And costs for these entries are 6 and 10 respectively, thus cost increased from 4 to 16.
And the problem here is once we put this pattern into the tree it pulls cost up for the entire tree. If we have multiple such patterns over the tree their effect is magnified. These entries finally outweigh possible profit of vectorization for remaining portion of the tree and we end up not vectorizing it at all (even if downstream optimizations could probably change it into optimal code). If SLP could make choice vectorization overhead vs gather intrinsic based in their costs while building vectorizable tree the outcome could be different.

Nov 25 2020, 3:20 AM · Restricted Project

Nov 23 2020

anton-afanasyev added inline comments to D57059: [SLP] Initial support for the vectorization of the non-power-of-2 vectors..
Nov 23 2020, 1:01 PM · Restricted Project
anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

I believe this issue is related to the default cost for getGatherScatterOpCost(). For the arch not having gather/scatter instrs we use TargetTransformInfoImplBase::getGatherScatterOpCost() which returns 1 unconditionally: https://github.com/llvm/llvm-project/blob/release/11.x/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h#L480
I'd fix it by setting something like 1024 for the default cost.

Nov 23 2020, 8:52 AM · Restricted Project
anton-afanasyev updated the diff for D91919: [SLP] Make SLPVectorizer to use `llvm.masked.scatter` intrinsic.

Align fix. Style fix.

Nov 23 2020, 2:08 AM · Restricted Project

Nov 21 2020

anton-afanasyev added a comment to D91919: [SLP] Make SLPVectorizer to use `llvm.masked.scatter` intrinsic.

Analogue of https://reviews.llvm.org/D90445 for stores.

Nov 21 2020, 11:05 AM · Restricted Project
anton-afanasyev requested review of D91919: [SLP] Make SLPVectorizer to use `llvm.masked.scatter` intrinsic.
Nov 21 2020, 11:03 AM · Restricted Project

Nov 20 2020

anton-afanasyev committed rG6f1c07b23a1c: [SLP][Test] Update pr47269.ll test. NFC (authored by anton-afanasyev).
[SLP][Test] Update pr47269.ll test. NFC
Nov 20 2020, 7:35 AM

Nov 18 2020

anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Saw some random miscompiles after this. Fixed by 4dbe12e86649ba6b5f03a9ba97e84d718727f7a7, can you check if I got it right?

Nov 18 2020, 4:19 AM · Restricted Project

Nov 17 2020

anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Fixed

Nov 17 2020, 7:49 AM · Restricted Project
anton-afanasyev committed rG0a1d315f9f16: [SLPVectorizer] Fix assert (authored by anton-afanasyev).
[SLPVectorizer] Fix assert
Nov 17 2020, 7:47 AM
anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

It looks like this change may cause a crash when building LNT, e.g. http://lab.llvm.org:8011/#/builders/105/builds/1899/steps/7/logs/stdio

Nov 17 2020, 7:32 AM · Restricted Project
anton-afanasyev committed rGfcad8d3635cf: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic (authored by anton-afanasyev).
[SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic
Nov 17 2020, 7:12 AM
anton-afanasyev closed D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 17 2020, 7:12 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 17 2020, 12:13 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Added another assert

Nov 17 2020, 12:13 AM · Restricted Project

Nov 16 2020

anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Fixes and assert

Nov 16 2020, 3:24 PM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 16 2020, 3:22 PM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 16 2020, 2:18 PM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Add overloaded newTreeEntry() for common case

Nov 16 2020, 2:18 PM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 16 2020, 1:19 PM · Restricted Project

Nov 15 2020

anton-afanasyev updated the summary of D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 15 2020, 7:18 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 15 2020, 7:15 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Fix test, CHECK prefix is unused

Nov 15 2020, 7:15 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Fix tests after "--check-prefixes" change (D90445) and fix one assert

Nov 15 2020, 4:57 AM · Restricted Project
anton-afanasyev added inline comments to rG119e4550dded: [SLPVectorizer][X86] Remove unused check-prefixes.
Nov 15 2020, 1:02 AM

Nov 14 2020

anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 14 2020, 9:38 PM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Added optional EntryState param to newTreeEntry()

Nov 14 2020, 9:34 PM · Restricted Project
anton-afanasyev added inline comments to rG119e4550dded: [SLPVectorizer][X86] Remove unused check-prefixes.
Nov 14 2020, 8:41 PM
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 14 2020, 9:49 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Add comment

Nov 14 2020, 9:49 AM · Restricted Project

Nov 12 2020

anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Also, please add ScatterVectorize to TreeEntry.dump()

Nov 12 2020, 7:17 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Small fix of debug printer

Nov 12 2020, 12:36 AM · Restricted Project

Nov 11 2020

anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Fixed asserts again

Nov 11 2020, 4:10 AM · Restricted Project

Nov 9 2020

anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 9 2020, 10:04 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Assert fix

Nov 9 2020, 10:04 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 9 2020, 9:48 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Added asserts

Nov 9 2020, 9:47 AM · Restricted Project
anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

I meant, to add a new vectorization kind for this node, something like Scatter or ScatterVectorized. We discussed before, that this new boolean field is going to e unused in many cases and better to introduce a new vectorization id (extend EntryState enum)

Nov 9 2020, 9:08 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Use of EntryState

Nov 9 2020, 9:08 AM · Restricted Project
anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Added second tree entry for addresses

Yep, this looks much better now. What about adding new vectorization kind for scatter-gather?

Nov 9 2020, 2:02 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Renamed IsScatteredOps to IsScatteredOpds

Nov 9 2020, 1:59 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 9 2020, 1:40 AM · Restricted Project

Nov 6 2020

anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Added second tree entry for addresses

Nov 6 2020, 2:44 PM · Restricted Project

Nov 5 2020

anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 5 2020, 10:43 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 5 2020, 10:00 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 5 2020, 9:17 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 5 2020, 8:33 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 5 2020, 8:04 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 5 2020, 7:45 AM · Restricted Project

Nov 4 2020

anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 4 2020, 11:57 PM · Restricted Project

Nov 3 2020

anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Addressed notes

Nov 3 2020, 10:46 PM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Nov 3 2020, 10:46 PM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Rebased

Nov 3 2020, 8:30 AM · Restricted Project
anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

I've extended test case again: https://reviews.llvm.org/rGe8d67ef2dc93. Also, @xbolva00 precommited test for PR47263, which is fixed with this patch.

Nov 3 2020, 8:29 AM · Restricted Project
anton-afanasyev committed rGe8d67ef2dc93: [SLP][X86][Test] Extend test coverage for PR47629 (authored by anton-afanasyev).
[SLP][X86][Test] Extend test coverage for PR47629
Nov 3 2020, 6:51 AM

Oct 31 2020

anton-afanasyev added a comment to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Rebased, but optimization eliminated for -mattr=.... Option -mattr=+avx512vl should be set explicitly to activate costs.

Oct 31 2020, 8:02 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Rebased against changed test file

Oct 31 2020, 8:00 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Oct 31 2020, 6:47 AM · Restricted Project

Oct 30 2020

anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Oct 30 2020, 11:22 PM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Updated comments and LaneIndex

Oct 30 2020, 11:22 PM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Oct 30 2020, 3:09 PM · Restricted Project
anton-afanasyev requested review of D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Oct 30 2020, 12:40 AM · Restricted Project

Oct 28 2020

anton-afanasyev committed rGfcd54b82e8cd: [SLP][Test] Precommit test case for PR47629. NFC. (authored by anton-afanasyev).
[SLP][Test] Precommit test case for PR47629. NFC.
Oct 28 2020, 12:10 PM

Aug 6 2020

anton-afanasyev committed rGa7478fab6ce8: [SLP] Fix order of `insertelement`/`insertvalue` seed operands (authored by anton-afanasyev).
[SLP] Fix order of `insertelement`/`insertvalue` seed operands
Aug 6 2020, 12:10 PM
anton-afanasyev closed D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.
Aug 6 2020, 12:10 PM · Restricted Project
anton-afanasyev updated the diff for D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Addressed comments

Aug 6 2020, 10:33 AM · Restricted Project
anton-afanasyev added inline comments to D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.
Aug 6 2020, 10:33 AM · Restricted Project