n.bozhenov (Nikolai Bozhenov)
User

Projects

User does not belong to any projects.

User Details

User Since
May 20 2016, 3:15 AM (112 w, 6 d)

Recent Activity

Jan 9 2018

n.bozhenov committed rL322069: [Nios2] Arithmetic instructions for R1 and R2 ISA..
[Nios2] Arithmetic instructions for R1 and R2 ISA.
Jan 9 2018, 3:16 AM
n.bozhenov closed D41236: [Nios2] Arithmetic instructions for R1 and R2 ISA..
Jan 9 2018, 3:16 AM

Jan 4 2018

n.bozhenov committed rL321792: [ValueTracking] Adding missed lit-test for commit r316208.
[ValueTracking] Adding missed lit-test for commit r316208
Jan 4 2018, 2:04 AM

Dec 7 2017

n.bozhenov committed rL320035: [Nios2] final infrastructure to provide compilation of a return from a function.
[Nios2] final infrastructure to provide compilation of a return from a function
Dec 7 2017, 4:35 AM
n.bozhenov closed D39688: [Nios2] final infrastructure addition to provide compilation of simple return from a function. by committing rL320035: [Nios2] final infrastructure to provide compilation of a return from a function.
Dec 7 2017, 4:35 AM

Oct 20 2017

n.bozhenov committed rL316208: [ValueTracking] Enabling ValueTracking patch by default .
[ValueTracking] Enabling ValueTracking patch by default
Oct 20 2017, 3:11 AM

Oct 19 2017

n.bozhenov committed rL316164: Revert r315992 because of a found miscompilation failure.
Revert r315992 because of a found miscompilation failure
Oct 19 2017, 8:37 AM

Oct 18 2017

n.bozhenov committed rL316082: Fixup patch for revision rL316070..
Fixup patch for revision rL316070.
Oct 18 2017, 7:25 AM
n.bozhenov committed rL316070: Improve lookThroughCast function..
Improve lookThroughCast function.
Oct 18 2017, 2:28 AM
n.bozhenov closed D38536: Improve lookThroughCast function. by committing rL316070: Improve lookThroughCast function..
Oct 18 2017, 2:28 AM

Oct 17 2017

n.bozhenov committed rL315992: Improve clamp recognition in ValueTracking..
Improve clamp recognition in ValueTracking.
Oct 17 2017, 4:51 AM
n.bozhenov closed D38531: Improve clamp recognition in ValueTracking. by committing rL315992: Improve clamp recognition in ValueTracking..
Oct 17 2017, 4:51 AM

Oct 16 2017

n.bozhenov committed rL315895: Move folding of icmp with zero after checking for min/max idioms..
Move folding of icmp with zero after checking for min/max idioms.
Oct 16 2017, 2:19 AM
n.bozhenov closed D38934: Move folding of icmp with zero after checking for min/max idioms. by committing rL315895: Move folding of icmp with zero after checking for min/max idioms..
Oct 16 2017, 2:19 AM

Sep 28 2017

n.bozhenov abandoned D38366: Fix a warning about casting a const pointer to void*.

Seems that it has been just fixed by rL314424 :-)
Abandoning this review.

Sep 28 2017, 9:10 AM
n.bozhenov created D38366: Fix a warning about casting a const pointer to void*.
Sep 28 2017, 9:04 AM

Sep 19 2017

n.bozhenov committed rL313626: [Nios2] Subtarget, basic infrastructure for frame, instructions and registers.
[Nios2] Subtarget, basic infrastructure for frame, instructions and registers
Sep 19 2017, 4:56 AM
n.bozhenov closed D37256: [Nios2] adding subtarget, basic infrastructure for frame, instructions and registers by committing rL313626: [Nios2] Subtarget, basic infrastructure for frame, instructions and registers.
Sep 19 2017, 4:56 AM

Sep 18 2017

n.bozhenov committed rL313524: [X86FixupBWInsts] More precise register liveness if no <imp-use> on MOVs..
[X86FixupBWInsts] More precise register liveness if no <imp-use> on MOVs.
Sep 18 2017, 3:19 AM
n.bozhenov closed D37559: [X86FixupBWInsts] More presise register liveness if no <imp-use> on MOVs. by committing rL313524: [X86FixupBWInsts] More precise register liveness if no <imp-use> on MOVs..
Sep 18 2017, 3:19 AM

Aug 10 2017

n.bozhenov committed rL310583: [ValueTracking] Enabling ValueTracking patch by default (recommit). Part 2..
[ValueTracking] Enabling ValueTracking patch by default (recommit). Part 2.
Aug 10 2017, 4:26 AM
n.bozhenov committed rL310582: [ValueTracking] Enabling ValueTracking patch by default (recommit). Part 1..
[ValueTracking] Enabling ValueTracking patch by default (recommit). Part 1.
Aug 10 2017, 4:23 AM
n.bozhenov closed D34101: [ValueTracking] Enabling the patch 'an improvement for non-negative phi bits' by default by committing rL310582: [ValueTracking] Enabling ValueTracking patch by default (recommit). Part 1..
Aug 10 2017, 4:23 AM

Aug 8 2017

n.bozhenov closed D36453: [libclang] Fix PR34055 (incompatible update of clang-c/Index.h).

committed r310359

Aug 8 2017, 7:20 AM
n.bozhenov committed rL310359: [libclang] Fix PR34055 (incompatible update of clang-c/Index.h).
[libclang] Fix PR34055 (incompatible update of clang-c/Index.h)
Aug 8 2017, 7:14 AM
n.bozhenov added a comment to D36453: [libclang] Fix PR34055 (incompatible update of clang-c/Index.h).

If the patch is accepted, it should also be merged into 5.0, I believe.

Aug 8 2017, 2:30 AM
n.bozhenov created D36453: [libclang] Fix PR34055 (incompatible update of clang-c/Index.h).
Aug 8 2017, 2:22 AM

Aug 4 2017

n.bozhenov committed rL310054: [InstCombine] Canonicalize clamp of float types to minmax in fast mode..
[InstCombine] Canonicalize clamp of float types to minmax in fast mode.
Aug 4 2017, 5:23 AM
n.bozhenov closed D33186: [InstCombine] Canonicalize clamp of float types to minmax in fast mode. by committing rL310054: [InstCombine] Canonicalize clamp of float types to minmax in fast mode..
Aug 4 2017, 5:23 AM
n.bozhenov committed rL310053: Add some tests for cast+clamp/min/max before D33186..
Add some tests for cast+clamp/min/max before D33186.
Aug 4 2017, 5:21 AM
n.bozhenov closed D35002: Add some tests for cast+clamp/min/max before D33186. by committing rL310053: Add some tests for cast+clamp/min/max before D33186..
Aug 4 2017, 5:21 AM

Jul 10 2017

n.bozhenov committed rL306383: Reapply "Frontend support for Nios2 target".
Reapply "Frontend support for Nios2 target"
Jul 10 2017, 9:42 AM

Jun 30 2017

n.bozhenov committed rL306815: Revert of r306525: "Canonicalize clamp of float types to minmax".
Revert of r306525: "Canonicalize clamp of float types to minmax"
Jun 30 2017, 3:39 AM

Jun 29 2017

n.bozhenov committed rL306684: [NFC] Use stdin for some tests instead of positional argument..
[NFC] Use stdin for some tests instead of positional argument.
Jun 29 2017, 7:52 AM
n.bozhenov closed D32994: [NFC] Use stdin for some tests instead of positional argument. by committing rL306684: [NFC] Use stdin for some tests instead of positional argument..
Jun 29 2017, 7:52 AM

Jun 28 2017

n.bozhenov committed rL306536: Revert r306528.
Revert r306528
Jun 28 2017, 5:15 AM
n.bozhenov committed rL306528: [ValueTracking] Enabling existing ValueTracking patch by default..
[ValueTracking] Enabling existing ValueTracking patch by default.
Jun 28 2017, 3:08 AM
n.bozhenov closed D34101: [ValueTracking] Enabling the patch 'an improvement for non-negative phi bits' by default by committing rL306528: [ValueTracking] Enabling existing ValueTracking patch by default..
Jun 28 2017, 3:08 AM
n.bozhenov committed rL306525: [InstCombine] Canonicalize clamp of float types to minmax in fast mode..
[InstCombine] Canonicalize clamp of float types to minmax in fast mode.
Jun 28 2017, 2:26 AM
n.bozhenov closed D33186: [InstCombine] Canonicalize clamp of float types to minmax in fast mode. by committing rL306525: [InstCombine] Canonicalize clamp of float types to minmax in fast mode..
Jun 28 2017, 2:26 AM
n.bozhenov committed rL306524: Add tests to document current InstCombine behavior for clamp pattern..
Add tests to document current InstCombine behavior for clamp pattern.
Jun 28 2017, 2:23 AM
n.bozhenov closed D34350: Add tests to document current InstCombine behavior for clamp pattern. by committing rL306524: Add tests to document current InstCombine behavior for clamp pattern..
Jun 28 2017, 2:23 AM

Jun 9 2017

n.bozhenov committed rL305068: Revert of r305066 "Reapply Frontend support for Nios2 target".
Revert of r305066 "Reapply Frontend support for Nios2 target"
Jun 9 2017, 5:10 AM
n.bozhenov committed rL305066: Reapply "Frontend support for Nios2 target".
Reapply "Frontend support for Nios2 target"
Jun 9 2017, 3:56 AM

Jun 8 2017

n.bozhenov committed rL305002: Revert "Frontend support for Nios2 target".
Revert "Frontend support for Nios2 target"
Jun 8 2017, 11:37 AM
n.bozhenov committed rL304994: Frontend support for Nios2 target..
Frontend support for Nios2 target.
Jun 8 2017, 10:41 AM
n.bozhenov closed D33356: [Nios2] Changes in frontend to support Nios2 LLVM target by committing rL304994: Frontend support for Nios2 target..
Jun 8 2017, 10:41 AM

May 29 2017

n.bozhenov committed rL304144: [Nios2] Target registration.
[Nios2] Target registration
May 29 2017, 2:49 AM
n.bozhenov closed D32669: [Nios2] Target registration by committing rL304144: [Nios2] Target registration.
May 29 2017, 2:48 AM

May 9 2017

n.bozhenov committed rL302513: [X86] Clang option -fuse-init-array has no effect when generating for MCU target.
[X86] Clang option -fuse-init-array has no effect when generating for MCU target
May 9 2017, 3:27 AM
n.bozhenov closed D32543: [X86] Clang option -fuse-init-array has no effect when generating for MCU target by committing rL302513: [X86] Clang option -fuse-init-array has no effect when generating for MCU target.
May 9 2017, 3:27 AM

Apr 18 2017

n.bozhenov committed rL300553: Make globalaa-retained.ll test catching more cases..
Make globalaa-retained.ll test catching more cases.
Apr 18 2017, 7:00 AM
n.bozhenov closed D32015: Make globalaa-retained.ll test catching more cases. by committing rL300553: Make globalaa-retained.ll test catching more cases..
Apr 18 2017, 6:56 AM
n.bozhenov committed rL300552: [GVNHoist] Mark GlobalsAA as preserved by GVNHoist..
[GVNHoist] Mark GlobalsAA as preserved by GVNHoist.
Apr 18 2017, 6:54 AM
n.bozhenov closed D32158: {GVNHoist] Mark GlobalsAA as preserved by GVNHoist. by committing rL300552: [GVNHoist] Mark GlobalsAA as preserved by GVNHoist..
Apr 18 2017, 6:46 AM

Apr 2 2017

n.bozhenov committed rL299329: [BypassSlowDivision] Do not bypass division of hash-like values.
[BypassSlowDivision] Do not bypass division of hash-like values
Apr 2 2017, 6:27 AM
n.bozhenov closed D28200: [BypassSlowDivision] Do not bypass division of hash-like values by committing rL299329: [BypassSlowDivision] Do not bypass division of hash-like values.
Apr 2 2017, 6:27 AM

Mar 26 2017

n.bozhenov added a comment to D28200: [BypassSlowDivision] Do not bypass division of hash-like values.

Actually, the comment at VALRNG_LONG declaration says that it is not a promise.

Ah, you're right. I thought that the code that did "no division is needed at all: The quotient is 0 and the remainder is equal to Dividend." checked VALRNG_LONG, but it doesn't.

Regardless of what the comments say, I think this reveals that it is very confusing that we have VALRNG_SHORT, which is a promise, and VALRNG_LONG, which is not.

Maybe we should rename them to VALRNG_KNOWN_SHORT and VALRNG_LIKELY_LONG?

Done.

Mar 26 2017, 3:38 PM
n.bozhenov updated the diff for D28200: [BypassSlowDivision] Do not bypass division of hash-like values.
Mar 26 2017, 3:31 PM

Mar 24 2017

n.bozhenov added inline comments to D28200: [BypassSlowDivision] Do not bypass division of hash-like values.
Mar 24 2017, 2:23 PM
n.bozhenov added a comment to D28200: [BypassSlowDivision] Do not bypass division of hash-like values.

I believe that the new version of the heuristic is much more robust than the previous one. However, a naive implementation didn't work initially. It turned out that hash values weren't recognized because of PHI nodes with undef incoming values generated by loop-unroll. I had to amend the patch to work around the problem.

It doesn't look like you added any "unit" tests to cover this changed behavior. Was that intentional?

Mar 24 2017, 2:14 PM
n.bozhenov updated the diff for D28200: [BypassSlowDivision] Do not bypass division of hash-like values.
Mar 24 2017, 2:07 PM

Mar 5 2017

n.bozhenov added a comment to D28200: [BypassSlowDivision] Do not bypass division of hash-like values.

And since the set of middle-end optimizations and their parameters are target-specific, I would like to have this test X86-specific. It is not an automatically generated test, it has only one CHECK statement, and therefore it is not a problem to have it as an llc test.

If we we really wanted to run the full pipeline, I don't see why we couldn't simply run opt -O3 | opt -codegenprepare. Can you think of a specific bug in this pass that would not be caught by this that would be caught by the lit test?

Mar 5 2017, 6:50 AM
n.bozhenov updated the diff for D28200: [BypassSlowDivision] Do not bypass division of hash-like values.

Changed the PHI heuristic as planned.

Mar 5 2017, 6:43 AM

Mar 4 2017

n.bozhenov added a comment to D28200: [BypassSlowDivision] Do not bypass division of hash-like values.

That wouldn't make much sense. The recognized patterns are already checked with simpler tests I have put into bypass-slow-div-special-cases.ll. The purpose of this particular file is to make sure that the patterns we recognize are indeed the patterns produced by the middle-end at the maximal optimization level (I have removed the explicit unroll-count option).

It sounds like there's an implicit "on this particular testcase" at the end of this sentence. "We are checking that we recognize the patterns produced by the middle-end at -O3 *on this particular testcase*."

Mar 4 2017, 3:04 PM

Mar 2 2017

n.bozhenov abandoned D28199: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.

Superseded by D29897.

Mar 2 2017, 3:13 PM
n.bozhenov committed rL296832: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.
[BypassSlowDivision] Use ValueTracking to simplify run-time checks
Mar 2 2017, 2:24 PM
n.bozhenov closed D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks by committing rL296832: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.
Mar 2 2017, 2:24 PM
n.bozhenov committed rL296828: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
[BypassSlowDivision] Refactor fast division insertion logic (NFC)
Mar 2 2017, 2:17 PM
n.bozhenov closed D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC) by committing rL296828: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Mar 2 2017, 2:17 PM

Mar 1 2017

n.bozhenov added inline comments to D28200: [BypassSlowDivision] Do not bypass division of hash-like values.
Mar 1 2017, 2:11 PM
n.bozhenov updated the diff for D28200: [BypassSlowDivision] Do not bypass division of hash-like values.

Moved most of the tests into CodeGenPrepare/NVPTX and changed RUN line in bypass-slow-division-fnv.ll.

Mar 1 2017, 2:05 PM

Feb 26 2017

n.bozhenov updated the diff for D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.

Ok. I see your point. Indeed, for example, there's no need to run the whole X86 code generator to check that a division bypassing is disabled if one of the operands doesn't fit into BypassType. So I have moved the tests introduced by this patch into Transforms/CodeGenPrepare/NVPTX/bypass-slow-div-special-cases.ll. However, I still believe that we should keep a few existing tests in CodeGen/X86/bypass-slow-division-64.ll to check that when bypassing fires, it produces a good X86 code.

Feb 26 2017, 1:12 PM
n.bozhenov added a comment to D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.

That's indeed somewhat frustrating... As I understand, now you all believe it's better to drop all the tests from test/CodeGen/X86/bypass-slow-division-32.ll and test/CodeGen/X86/bypass-slow-division-64.ll and replace them with a few target-independent tests.

Feb 26 2017, 7:54 AM

Feb 23 2017

n.bozhenov added a dependent revision for D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks: D28200: [BypassSlowDivision] Do not bypass division of hash-like values.
Feb 23 2017, 9:03 AM
n.bozhenov removed a dependent revision for D28199: [BypassSlowDivision] Use ValueTracking to simplify run-time checks: D28200: [BypassSlowDivision] Do not bypass division of hash-like values.
Feb 23 2017, 9:03 AM
n.bozhenov edited dependencies for D28200: [BypassSlowDivision] Do not bypass division of hash-like values, added: 1; removed: 1.
Feb 23 2017, 9:03 AM
n.bozhenov added inline comments to D28200: [BypassSlowDivision] Do not bypass division of hash-like values.
Feb 23 2017, 9:01 AM
n.bozhenov updated the diff for D28200: [BypassSlowDivision] Do not bypass division of hash-like values.

The patch has been rebased onto D29897.

Feb 23 2017, 9:00 AM
n.bozhenov added a comment to D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.

Well, it might make sense to write opt tests here... But we already have got 3 files with 18 llc tests for division bypassing. Moreover, while working on this patchset, the tests were thoroughly reviewed, it was insisted that the test should be written this way, I had to make a number of commits specifically to modify the tests. So, I don't think it would be a good idea to throw away all the work that has been done and re-write the tests from scratch now.

Feb 23 2017, 8:57 AM
n.bozhenov updated the diff for D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.
Feb 23 2017, 8:55 AM

Feb 22 2017

n.bozhenov added a comment to D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.

As for tests, it was discussed in D28196 that it's better to have them that detailed. I agree with you that they are overly fragile and check for a lot of actually insignificant details. But on the other hand, this approach also has a number of advantages: tests indeed guarantee that the compiler generates correct code for the testcase, the tests are easy to create and update, diffs in tests induced by patches are explicit and easy to review.

Feb 22 2017, 12:49 PM
n.bozhenov added inline comments to D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.
Feb 22 2017, 12:21 PM
n.bozhenov updated the diff for D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.
Feb 22 2017, 12:20 PM

Feb 21 2017

n.bozhenov added a comment to D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).

lgtm with comments updated. \o/

Feb 21 2017, 5:54 AM
n.bozhenov added a comment to D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.

Do you think it would be too conservative for us to say: We won't optimize a long div if you do a short div with the same operands anywhere in the same function?

Feb 21 2017, 5:52 AM

Feb 20 2017

n.bozhenov added a comment to D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.

When we see x/y, in addition to checking whether x and y are known "long", should we also check whether x | y is known-long? This way if we saw something like:

if (x | y & 0xffffffff00000000) return x / y;
else return static_cast<int32_t>(x) / static_cast<int32_t>(y);

we wouldn't re-optimize this code.

Feb 20 2017, 10:56 AM
n.bozhenov updated the diff for D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.
Feb 20 2017, 10:39 AM
n.bozhenov added inline comments to D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Feb 20 2017, 10:36 AM
n.bozhenov updated the diff for D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Feb 20 2017, 10:29 AM

Feb 19 2017

n.bozhenov updated the diff for D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.
Feb 19 2017, 8:05 AM
n.bozhenov added inline comments to D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Feb 19 2017, 8:03 AM
n.bozhenov updated the diff for D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Feb 19 2017, 7:56 AM

Feb 17 2017

n.bozhenov added inline comments to D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Feb 17 2017, 2:31 PM
n.bozhenov updated the diff for D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Feb 17 2017, 2:31 PM
n.bozhenov updated the diff for D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.

Yet another rebase.

Feb 17 2017, 2:31 PM

Feb 15 2017

n.bozhenov updated the diff for D29897: [BypassSlowDivision] Use ValueTracking to simplify run-time checks.

Rebased onto a newer version of D29896.

Feb 15 2017, 9:22 AM
n.bozhenov added inline comments to D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Feb 15 2017, 9:20 AM
n.bozhenov added inline comments to D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Feb 15 2017, 9:12 AM
n.bozhenov updated the diff for D29896: [BypassSlowDivision] Refactor fast division insertion logic (NFC).
Feb 15 2017, 9:08 AM