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 (113 w, 3 d)

Recent Activity

Tue, Dec 1

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?

Tue, Dec 1, 3:29 PM · Restricted Project

Wed, Nov 25

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.

Wed, Nov 25, 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.

Wed, Nov 25, 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.

Wed, Nov 25, 3:20 AM · Restricted Project

Mon, Nov 23

anton-afanasyev added inline comments to D57059: [SLP] Initial support for the vectorization of the non-power-of-2 vectors..
Mon, Nov 23, 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.

Mon, Nov 23, 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.

Mon, Nov 23, 2:08 AM · Restricted Project

Sat, Nov 21

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.

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

Fri, Nov 20

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

Wed, Nov 18

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?

Wed, Nov 18, 4:19 AM · Restricted Project

Tue, Nov 17

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

Fixed

Tue, Nov 17, 7:49 AM · Restricted Project
anton-afanasyev committed rG0a1d315f9f16: [SLPVectorizer] Fix assert (authored by anton-afanasyev).
[SLPVectorizer] Fix assert
Tue, Nov 17, 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

Tue, Nov 17, 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
Tue, Nov 17, 7:12 AM
anton-afanasyev closed D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Tue, Nov 17, 7:12 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Tue, Nov 17, 12:13 AM · Restricted Project
anton-afanasyev updated the diff for D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.

Added another assert

Tue, Nov 17, 12:13 AM · Restricted Project

Mon, Nov 16

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

Fixes and assert

Mon, Nov 16, 3:24 PM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Mon, Nov 16, 3:22 PM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Mon, Nov 16, 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

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

Sun, Nov 15

anton-afanasyev updated the summary of D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Sun, Nov 15, 7:18 AM · Restricted Project
anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Sun, Nov 15, 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

Sun, Nov 15, 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

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

Sat, Nov 14

anton-afanasyev added inline comments to D90445: [SLP] Make SLPVectorizer to use `llvm.masked.gather` intrinsic.
Sat, Nov 14, 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()

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

Add comment

Sat, Nov 14, 9:49 AM · Restricted Project

Thu, Nov 12

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

Also, please add ScatterVectorize to TreeEntry.dump()

Thu, Nov 12, 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

Thu, Nov 12, 12:36 AM · Restricted Project

Wed, Nov 11

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

Fixed asserts again

Wed, Nov 11, 4:10 AM · Restricted Project

Mon, Nov 9

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

Assert fix

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

Added asserts

Mon, Nov 9, 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)

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

Use of EntryState

Mon, Nov 9, 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?

Mon, Nov 9, 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

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

Fri, Nov 6

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

Added second tree entry for addresses

Fri, Nov 6, 2:44 PM · Restricted Project

Thu, Nov 5

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

Wed, Nov 4

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

Tue, Nov 3

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

Addressed notes

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

Rebased

Tue, Nov 3, 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.

Tue, Nov 3, 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
Tue, Nov 3, 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
anton-afanasyev updated the diff for D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Addressed comments

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

Aug 5 2020

anton-afanasyev added a comment to D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Fixed

Aug 5 2020, 6:51 AM · Restricted Project
anton-afanasyev updated the diff for D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Addressed

Aug 5 2020, 6:51 AM · Restricted Project
anton-afanasyev added a comment to D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Fixed

Aug 5 2020, 6:40 AM · Restricted Project
anton-afanasyev updated the diff for D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Addressed comments

Aug 5 2020, 6:40 AM · Restricted Project
anton-afanasyev updated the diff for D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Ping. Rebase.

Aug 5 2020, 3:43 AM · Restricted Project

Jul 29 2020

anton-afanasyev updated the diff for D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Updated

Jul 29 2020, 9:01 AM · Restricted Project
anton-afanasyev added a comment to D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Addressed @ABataev's comments.

Jul 29 2020, 9:00 AM · Restricted Project

Jul 28 2020

anton-afanasyev added a reviewer for D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands: dtemirbulatov.
Jul 28 2020, 4:41 AM · Restricted Project

Jul 24 2020

anton-afanasyev updated the diff for D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Update. Splitted findBuildAggregate() to recursive and non-recursive parts.

Jul 24 2020, 1:23 PM · Restricted Project
anton-afanasyev added inline comments to D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.
Jul 24 2020, 1:22 PM · Restricted Project

Jul 22 2020

anton-afanasyev committed rG56c92bf4b7a6: [SLP][Test] Precommit tests for D83779. NFC. (authored by anton-afanasyev).
[SLP][Test] Precommit tests for D83779. NFC.
Jul 22 2020, 8:27 AM

Jul 16 2020

anton-afanasyev added a comment to D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Add test?

I assume this is actually NFC, it just tries to optimize the function findBuildAggregate.

Jul 16 2020, 7:51 AM · Restricted Project
anton-afanasyev added inline comments to D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.
Jul 16 2020, 7:48 AM · Restricted Project
anton-afanasyev updated the diff for D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Update tests

Jul 16 2020, 7:48 AM · Restricted Project

Jul 14 2020

anton-afanasyev added a comment to D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands.

Add test?

Jul 14 2020, 9:28 AM · Restricted Project
Herald added a project to D83779: [SLP] Fix order of `insertelement`/`insertvalue` seed operands: Restricted Project.
Jul 14 2020, 8:18 AM · Restricted Project

May 20 2020

anton-afanasyev added inline comments to D80241: [SLP] PR45269 Fix getVectorElementSize() is slow.
May 20 2020, 10:54 AM · Restricted Project

Mar 9 2020

anton-afanasyev added a comment to D74516: Extend TimeTrace to LLVM's new pass manager.

I'm sorry for the late comment, but this should have really been done through the PassInstrumentation framework.
It looks like a classic use-case.

Mar 9 2020, 11:21 PM · Restricted Project

Feb 24 2020

anton-afanasyev added a comment to D62067: [Support] Time profiler: support new PassManager.

Here is the another patch for new pm support: D74516

Feb 24 2020, 11:30 PM · Restricted Project

Feb 23 2020

anton-afanasyev added a comment to D74516: Extend TimeTrace to LLVM's new pass manager.

I've faced with objections from @philip.pfaffe trying to implement the same: D62067. Since that time, trace profiler has supported multiple threads (D71059), so I do believe this can now correctly work. I would wait for review from new pm guys.

Feb 23 2020, 4:06 PM · Restricted Project
anton-afanasyev added a reviewer for D74516: Extend TimeTrace to LLVM's new pass manager: lebedev.ri.
Feb 23 2020, 4:06 PM · Restricted Project

Jan 16 2020

anton-afanasyev retitled D72689: [SLP] Revectorize partially vectorized instructions from [SLP] Vectorize partially vectorized instructions to [SLP] Revectorize partially vectorized instructions.
Jan 16 2020, 1:31 AM · Restricted Project

Jan 14 2020

anton-afanasyev added a comment to D72689: [SLP] Revectorize partially vectorized instructions.

I saw similar thing in recent research

https://www.nextgenvec.org/slides/revec-cc.pdf

They proposed a new compiler pass to perform revectorization.

Did you look at it? What do you think?

Jan 14 2020, 6:36 AM · Restricted Project
anton-afanasyev created D72689: [SLP] Revectorize partially vectorized instructions.
Jan 14 2020, 2:37 AM · Restricted Project

Jan 6 2020

anton-afanasyev committed rGa79295333005: [Metadata] Add TBAA struct metadata to `AAMDNode` (authored by anton-afanasyev).
[Metadata] Add TBAA struct metadata to `AAMDNode`
Jan 6 2020, 12:07 AM
anton-afanasyev closed D70924: [Metadata] Add TBAA struct metadata to `AAMDNode`.
Jan 6 2020, 12:07 AM · Restricted Project

Jan 3 2020

anton-afanasyev updated the diff for D70924: [Metadata] Add TBAA struct metadata to `AAMDNode`.

Update AAMDNodes constructors

Jan 3 2020, 11:31 AM · Restricted Project
anton-afanasyev added inline comments to D70924: [Metadata] Add TBAA struct metadata to `AAMDNode`.
Jan 3 2020, 11:31 AM · Restricted Project