Page MenuHomePhabricator

myatsina (Marina Yatsina)
User

Projects

User does not belong to any projects.

User Details

User Since
Mar 9 2015, 7:37 AM (231 w, 5 d)

Recent Activity

Jan 31 2018

myatsina committed rL323874: Fix build error in r323870.
Fix build error in r323870
Jan 31 2018, 6:21 AM
myatsina committed rL323870: Take into account the cost of local intervals when selecting split candidate..
Take into account the cost of local intervals when selecting split candidate.
Jan 31 2018, 5:33 AM
myatsina closed D41585: [Greedy RegAlloc] Take into account the cost of local intervals when selecting split candidate..
Jan 31 2018, 5:32 AM · Restricted Project

Jan 29 2018

myatsina added a comment to D41585: [Greedy RegAlloc] Take into account the cost of local intervals when selecting split candidate..

Hi Quentin,

Jan 29 2018, 8:20 AM · Restricted Project

Jan 22 2018

myatsina committed rL323126: Fix bug in commit 323096 exposed by test in test-suite-verify-machineinstrs….
Fix bug in commit 323096 exposed by test in test-suite-verify-machineinstrs…
Jan 22 2018, 7:34 AM
myatsina committed rL323114: Fixing warnings caused by commit 323095.
Fixing warnings caused by commit 323095
Jan 22 2018, 5:30 AM
myatsina added a comment to D40330: Separate ExecutionDepsFix into 4 parts - enable breaking false dependencies for all reg classes..

I've addressed the comments in this review and done the commit based on the LGTM in https://reviews.llvm.org/D40333, which is the "end version" of all these refactoring changes after more refactoring and clang-format.

Jan 22 2018, 2:15 AM
myatsina committed rL323096: Break false dependencies for POPCNT, LZCNT, TZCNT.
Break false dependencies for POPCNT, LZCNT, TZCNT
Jan 22 2018, 2:08 AM
myatsina closed D40334: [X86] Break false dependencies for POPCNT, LZCNT, TZCNT.
Jan 22 2018, 2:08 AM
myatsina committed rL323095: Separate LoopTraversal, ReachingDefAnalysis and BreakFalseDeps into their own….
Separate LoopTraversal, ReachingDefAnalysis and BreakFalseDeps into their own…
Jan 22 2018, 2:08 AM
myatsina closed D40333: Separate LoopTraversal and BreakFalseDeps out of ExecutionDomainFix into their own files.
Jan 22 2018, 2:08 AM
myatsina committed rL323094: Rename ExecutionDepsFix files to ExecutionDomainFix.
Rename ExecutionDepsFix files to ExecutionDomainFix
Jan 22 2018, 2:08 AM
myatsina closed D40332: Rename ExecutionDepsFix file to ExecutionDomainFix.
Jan 22 2018, 2:08 AM
myatsina committed rL323093: ExecutionDepsFix refactoring:.
ExecutionDepsFix refactoring:
Jan 22 2018, 2:07 AM
myatsina committed rL323092: ExecutionDepsFix refactoring:.
ExecutionDepsFix refactoring:
Jan 22 2018, 2:07 AM
myatsina committed rL323091: ExecutionDepsFix refactoring:.
ExecutionDepsFix refactoring:
Jan 22 2018, 2:07 AM
myatsina committed rL323090: ExecutionDepsFix refactoring:.
ExecutionDepsFix refactoring:
Jan 22 2018, 2:07 AM
myatsina committed rL323089: ExecutionDepsFix refactoring:.
ExecutionDepsFix refactoring:
Jan 22 2018, 2:07 AM
myatsina committed rL323088: ExecutionDepsFix refactoring:.
ExecutionDepsFix refactoring:
Jan 22 2018, 2:07 AM
myatsina committed rL323087: Separate ExecutionDepsFix into 4 parts:.
Separate ExecutionDepsFix into 4 parts:
Jan 22 2018, 2:07 AM
myatsina closed D40331: clang-format ExecutionDepsFix.
Jan 22 2018, 2:07 AM
myatsina closed D40330: Separate ExecutionDepsFix into 4 parts - enable breaking false dependencies for all reg classes..
Jan 22 2018, 2:07 AM

Jan 7 2018

myatsina added a comment to D40333: Separate LoopTraversal and BreakFalseDeps out of ExecutionDomainFix into their own files.

Matthias, did you get a chance to look at these changes (and at the changes in https://reviews.llvm.org/D40330) ? Are you OK with them?

Jan 7 2018, 1:35 AM
myatsina added a comment to D41585: [Greedy RegAlloc] Take into account the cost of local intervals when selecting split candidate..

ping

Jan 7 2018, 1:33 AM · Restricted Project

Dec 26 2017

myatsina created D41585: [Greedy RegAlloc] Take into account the cost of local intervals when selecting split candidate..
Dec 26 2017, 9:47 AM · Restricted Project

Dec 20 2017

myatsina added a comment to D40333: Separate LoopTraversal and BreakFalseDeps out of ExecutionDomainFix into their own files.

Ping

Dec 20 2017, 2:59 AM
myatsina added a comment to D40330: Separate ExecutionDepsFix into 4 parts - enable breaking false dependencies for all reg classes..

Ping

Dec 20 2017, 2:59 AM

Dec 13 2017

myatsina updated the diff for D40330: Separate ExecutionDepsFix into 4 parts - enable breaking false dependencies for all reg classes..

Changes based on comments in https://reviews.llvm.org/D40333

Dec 13 2017, 2:35 PM
myatsina updated the diff for D40333: Separate LoopTraversal and BreakFalseDeps out of ExecutionDomainFix into their own files.

I've uploaded a new review here and in https://reviews.llvm.org/D40330.

Dec 13 2017, 2:35 PM

Dec 5 2017

myatsina updated the diff for D40334: [X86] Break false dependencies for POPCNT, LZCNT, TZCNT.

Added .addreg(Reg, RegState::ImplicitDefine)

Dec 5 2017, 9:04 AM

Dec 3 2017

myatsina updated the diff for D40334: [X86] Break false dependencies for POPCNT, LZCNT, TZCNT.

Addressed comments.

Dec 3 2017, 2:03 AM

Dec 1 2017

myatsina added a comment to D15075: No error for conflict between inputs\outputs and clobber list.

Hello,

In the process of upgrading from clang 3.6.1 to a newer version, I ran into this new error and thus imported the new intrinsics from intrin.h for rep movsb and friends. I see several discussions in this thread about how having the registers solely in the inputs list is not sufficient for something like "rep movsb" because the modified registers will not be clobbered, however none of these suggested changes made it into the eventual intrin.h.

I found that using the versions of __movsb and __stosb that are at the head revision intrin.h produced bad code generation vs the versions with the clobbers. Note this is on PS4 under the older clang 3.6.1, but I don't see anything in this CL that would update the clobber behavior for newer versions of clang.

Shouldn't the intrinsics be updated to use input/output registers or some other method of clobbering?

Dec 1 2017, 1:01 AM

Nov 29 2017

myatsina added a comment to D40334: [X86] Break false dependencies for POPCNT, LZCNT, TZCNT.

What are you planning to do with 16-bit instructions? Like I said XOR16 is insufficient to break a dependency.

Nov 29 2017, 11:21 PM
myatsina updated the diff for D40334: [X86] Break false dependencies for POPCNT, LZCNT, TZCNT.

Added subtarget features.
Adding the rr versions of the instructions to hasPartialRegUpdate affected folding of memory operands for these instructions (if an instruction has partial reg update, then it folds only if optimizing for size) - Made a small adjustment the test to recreate the problematic scenario after this change.

Nov 29 2017, 4:26 PM
myatsina added a comment to D40333: Separate LoopTraversal and BreakFalseDeps out of ExecutionDomainFix into their own files.

Thanks for the comments!
My changes are mostly refactoring of the old ExecutionDepsDix pass in a way that is (almost*) NFC.
This pass combined the logic of both breaking false dependencies and execution domain adjustments in one single pass that traversed the basic blocks in a very special way (optimizing traversal of loops).
I think the first review (https://reviews.llvm.org/D40330) in this bunch would make everything clearer for you.

Nov 29 2017, 3:33 PM

Nov 23 2017

myatsina added inline comments to D40333: Separate LoopTraversal and BreakFalseDeps out of ExecutionDomainFix into their own files.
Nov 23 2017, 8:11 AM
myatsina updated the diff for D40330: Separate ExecutionDepsFix into 4 parts - enable breaking false dependencies for all reg classes..

Fixed vector intialization.
Also incorporated comments from https://reviews.llvm.org/D40333 in this patch, which seems to be more appropriate than the later one.

Nov 23 2017, 8:09 AM

Nov 22 2017

myatsina updated the summary of D40334: [X86] Break false dependencies for POPCNT, LZCNT, TZCNT.
Nov 22 2017, 2:30 AM
myatsina updated the summary of D40333: Separate LoopTraversal and BreakFalseDeps out of ExecutionDomainFix into their own files.
Nov 22 2017, 2:29 AM
myatsina updated the summary of D40332: Rename ExecutionDepsFix file to ExecutionDomainFix.
Nov 22 2017, 2:29 AM
myatsina updated the summary of D40331: clang-format ExecutionDepsFix.
Nov 22 2017, 2:29 AM
myatsina updated the summary of D40330: Separate ExecutionDepsFix into 4 parts - enable breaking false dependencies for all reg classes..
Nov 22 2017, 2:29 AM
myatsina added reviewers for D40331: clang-format ExecutionDepsFix: craig.topper, david, loladiro, chandlerc, MatzeB, bruno, mehdi_amini, zvi.
Nov 22 2017, 2:20 AM
myatsina added reviewers for D40330: Separate ExecutionDepsFix into 4 parts - enable breaking false dependencies for all reg classes.: craig.topper, DavidKreitzer, loladiro, chandlerc, mehdi_amini, MatzeB, bruno.
Nov 22 2017, 2:19 AM

Nov 21 2017

myatsina created D40332: Rename ExecutionDepsFix file to ExecutionDomainFix.
Nov 21 2017, 10:21 PM
myatsina created D40334: [X86] Break false dependencies for POPCNT, LZCNT, TZCNT.
Nov 21 2017, 10:21 PM
myatsina created D40333: Separate LoopTraversal and BreakFalseDeps out of ExecutionDomainFix into their own files.
Nov 21 2017, 10:21 PM
myatsina created D40330: Separate ExecutionDepsFix into 4 parts - enable breaking false dependencies for all reg classes..
Nov 21 2017, 10:21 PM
myatsina created D40331: clang-format ExecutionDepsFix.
Nov 21 2017, 10:21 PM

Oct 22 2017

myatsina committed rL316295: Add logic to greedy reg alloc to avoid bad eviction chains.
Add logic to greedy reg alloc to avoid bad eviction chains
Oct 22 2017, 11:00 AM
myatsina closed D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains by committing rL316295: Add logic to greedy reg alloc to avoid bad eviction chains.
Oct 22 2017, 11:00 AM

Oct 16 2017

myatsina updated the diff for D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains.

As compile time was a concern, I've added a flag to control weather we do cost calculations for local intervals we expect to be created (it's on by default for X86 target, off for the rest).
I've fixed the tests and some comments.

Oct 16 2017, 7:42 AM

Sep 25 2017

myatsina added a comment to D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains.

Hi Quentin,

Sep 25 2017, 8:46 AM

Aug 23 2017

myatsina added a comment to D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains.

Have you had a chance to look at it yet?

Aug 23 2017, 6:30 AM

Aug 15 2017

myatsina added a comment to D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains.

As far as I read (http://www.eecs.umich.edu/~mahlke/papers/1993/hwu_jsuper93.pdf), in order to create superblocks, we need to identify traces using execution profile information, and then do tail duplication to avoid multiple entrances.
According the authors of this technique, this transformation as itself takes significant amount of code and compile time.
I don’t think this transformation is something we should do only for the sake of machine copy propagation pass, as it adds significant complexity.
The decision of supporting this transformation and the possible optimizations that can benefit from it seems like an orthogonal discussion that is not directly related to this bad eviction chains I’m trying to solve.

Aug 15 2017, 5:27 PM

Aug 14 2017

myatsina added a comment to D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains.

Based on this I think the solution should probably be kept in Greedy (+ possibly additional cleanup in the copy propagation pass).

Would a super block copy propagation pass work?
I believe the code in that pass should just work in such configuration.

Aug 14 2017, 2:58 PM
myatsina added a comment to D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains.

Hi,

The greedy allocator is already very complicated and I am not sure the additional complexity of the eviction track is worth it.
Is it something that could be cleaned up in machine copy propagation? The problem is very local so that sounds doable.

I will have a closer look to the patch because fixing the problem from the start is obviously better that patching up later, but given how rare that problem is I really believe exploring other, less complex avenue is interesting.

Cheers,
Quentin

Thank you for suggesting the machine copy propagation, I've started working on this direction, it definitely seems easier to implement it there.
On the other hand, if I understood correctly, one of the issues with the old llvm register allocator (linear scan) was that that it did a lot of decisions that the rewriter had to clean up afterwards, and it was intended that greedy will try to avoid such decisions. I'm not sure if this eviction chain falls under this category or not.

Thanks,
Marina

Aug 14 2017, 12:58 PM

Jul 27 2017

myatsina added a comment to D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains.

Hi,

The greedy allocator is already very complicated and I am not sure the additional complexity of the eviction track is worth it.
Is it something that could be cleaned up in machine copy propagation? The problem is very local so that sounds doable.

I will have a closer look to the patch because fixing the problem from the start is obviously better that patching up later, but given how rare that problem is I really believe exploring other, less complex avenue is interesting.

Cheers,
Quentin

Jul 27 2017, 5:16 AM

Jul 24 2017

myatsina updated subscribers of D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains.
Jul 24 2017, 2:06 PM
myatsina created D35816: [Greedy RegAlloc] Add logic to greedy reg alloc to avoid bad eviction chains.
Jul 24 2017, 2:01 PM

Jul 23 2017

myatsina accepted D34739: [X86][InlineAsm][Ms Compatibility]Prefer variable name over a register when the two collides.
Jul 23 2017, 12:19 AM
myatsina accepted D34740: [X86][InlineAsm][Ms Compatibility]Prefer variable name over a register when the two collides.
Jul 23 2017, 12:19 AM

Jun 26 2017

myatsina committed rL306301: [inline asm] dot operator while using imm generates wrong ir + asm - clang part.
[inline asm] dot operator while using imm generates wrong ir + asm - clang part
Jun 26 2017, 9:10 AM
myatsina closed D33040: [test][inline asm] test for dot operator while using imm generates wrong ir + asm by committing rL306301: [inline asm] dot operator while using imm generates wrong ir + asm - clang part.
Jun 26 2017, 9:10 AM
myatsina committed rL306300: [inline asm] dot operator while using imm generates wrong ir + asm - llvm part.
[inline asm] dot operator while using imm generates wrong ir + asm - llvm part
Jun 26 2017, 9:04 AM
myatsina closed D33039: [inline asm] dot operator while using imm generates wrong ir + asm by committing rL306300: [inline asm] dot operator while using imm generates wrong ir + asm - llvm part.
Jun 26 2017, 9:04 AM
myatsina committed rL306297: [inline asm][gcc-compatiblity] "=i" output constraint support.
[inline asm][gcc-compatiblity] "=i" output constraint support
Jun 26 2017, 8:56 AM
myatsina closed D31383: [inline asm] "=i" output constraint support - gcc compatiblity by committing rL306297: [inline asm][gcc-compatiblity] "=i" output constraint support.
Jun 26 2017, 8:56 AM

Jun 25 2017

myatsina added reviewers for D33278: [LLVM][x86][Inline Asm] - Enum support for MS syntax: echristo, mcrosier, coby, ehsan.
Jun 25 2017, 6:25 AM

Apr 4 2017

myatsina added a comment to D30177: [ExecutionDepsFix] Recognize existing dep breaks.

Do you have any update on this change?

Apr 4 2017, 1:33 AM

Mar 28 2017

myatsina accepted D31277: [X86][MS-compatability]Allow named synonymous for MS-assembly operators.
Mar 28 2017, 12:34 AM

Mar 27 2017

myatsina added inline comments to D31277: [X86][MS-compatability]Allow named synonymous for MS-assembly operators.
Mar 27 2017, 4:34 AM

Mar 23 2017

myatsina accepted D29598: LLVM Changes for alloc_align.

LGTM

Mar 23 2017, 9:29 AM
myatsina added inline comments to D29598: LLVM Changes for alloc_align.
Mar 23 2017, 1:52 AM

Mar 19 2017

myatsina added inline comments to D29598: LLVM Changes for alloc_align.
Mar 19 2017, 2:32 AM
myatsina added inline comments to D29599: Clang Changes for alloc_align.
Mar 19 2017, 2:32 AM

Mar 15 2017

myatsina added a comment to D30177: [ExecutionDepsFix] Recognize existing dep breaks.

Do you have a new revision for this change?

Mar 15 2017, 9:56 AM

Feb 27 2017

myatsina added inline comments to D30177: [ExecutionDepsFix] Recognize existing dep breaks.
Feb 27 2017, 7:24 AM

Feb 22 2017

myatsina accepted D30173: [ExecutionDepsFix] Don't revisit true dependencies.
Feb 22 2017, 7:49 AM
myatsina added a comment to D30242: [ExecutionDepsFix] Don't make copies of LiveReg objects when collecting operands for soft instructions.

I've seen some places that do SmallVector<std::unique_ptr<type>, size>. This might be a bit better as it states explicitly that there is no duplication in this data structure.

Feb 22 2017, 7:46 AM

Feb 17 2017

myatsina added a comment to D28915: [ExecutionDepsFix] Optimize instruction insertion.

I'm sorry, I'm getting too lost in this review with the interaction between all the changes and especially trying to check if all the corner cases were tested sufficiently.
I want to make sure we implement each of your changes the best possible way.

Feb 17 2017, 4:36 AM

Feb 15 2017

myatsina added inline comments to D28786: [ExecutionDepsFix] Kill clearance at function entry/calls.
Feb 15 2017, 8:10 AM
myatsina added inline comments to D28786: [ExecutionDepsFix] Kill clearance at function entry/calls.
Feb 15 2017, 8:02 AM

Feb 9 2017

myatsina added a comment to D28786: [ExecutionDepsFix] Kill clearance at function entry/calls.

The existent tests you've changes seem to be affect by other changes as well.
Can you please upload only the changed tests' logic that is affected by this patch alone?
I would not like to see the affects of "xor fusion" or the other things here, just the support for call instructions in clearance calculation

Feb 9 2017, 8:32 AM
myatsina added a comment to D28915: [ExecutionDepsFix] Optimize instruction insertion.

First, I'm sorry for the late review :)

Feb 9 2017, 7:13 AM

Feb 1 2017

myatsina accepted D28989: [X86][MS]Adjacent comments within multi-line inline assembly statement.

LGTM

Feb 1 2017, 3:25 AM

Jan 24 2017

myatsina accepted D28759: [ExecutionDepsFix] Improve clearance calculation for loops.

Added a few minor comments.

Jan 24 2017, 6:25 AM

Jan 19 2017

myatsina abandoned D27391: Fix for false dependency identification (pr31143) - reading undef values shouldn't be considers as a use.
Jan 19 2017, 6:08 AM

Jan 18 2017

myatsina committed rL292352: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.
[X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix
Jan 18 2017, 12:19 AM
myatsina closed D28468: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix by committing rL292352: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.
Jan 18 2017, 12:19 AM

Jan 17 2017

myatsina added a comment to D28468: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.

Can you see the tests? I've added comments next to them.
Do this tests capture what you meant?

Yes.

But I thought you also had one using llvm-objdump so we also test the object->instruction disassembly path.

Jan 17 2017, 11:50 AM
myatsina added a comment to D28468: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.

Can you see the tests? I've added comments next to them.
Do this tests capture what you meant?

Jan 17 2017, 11:34 AM
myatsina added inline comments to D28786: [ExecutionDepsFix] Kill clearance at function entry/calls.
Jan 17 2017, 5:48 AM

Jan 16 2017

myatsina updated the diff for D28468: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.

I've added the test that check for errors.

Jan 16 2017, 2:33 PM
myatsina added inline comments to D28759: [ExecutionDepsFix] Improve clearance calculation for loops.
Jan 16 2017, 8:01 AM

Jan 12 2017

myatsina updated the diff for D28468: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.

Added relevant data16/data32+lgdt tests.

Jan 12 2017, 9:03 AM

Jan 10 2017

myatsina added a comment to D28468: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.

Can you add some disassembler tests?

Do you mean to add tests for the tablegen diassembler change?

Yes. I also notice that the testsuite is short on testing data16/data32. It'd be nice to add a few more tests for these as well.

Jan 10 2017, 10:11 AM

Jan 9 2017

myatsina updated subscribers of D28468: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.
Jan 9 2017, 8:56 AM
myatsina added a comment to D28468: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.

Can you add some disassembler tests?

Jan 9 2017, 7:17 AM
myatsina retitled D28468: [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix from to [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefix.
Jan 9 2017, 6:18 AM