Page MenuHomePhabricator

nikic (Nikita Popov)
User

Projects

User does not belong to any projects.

User Details

User Since
May 5 2018, 9:37 AM (37 w, 22 h)

Recent Activity

Yesterday

nikic committed rL351645: [InstCombine] Simplify cttz/ctlz + icmp ugt/ult.
[InstCombine] Simplify cttz/ctlz + icmp ugt/ult
Sat, Jan 19, 1:59 AM
nikic closed D56355: [InstCombine] Simplify cttz/ctlz + icmp ugt/ult into mask check.
Sat, Jan 19, 1:59 AM
nikic added inline comments to D56907: [TTI] Add generic USUBSAT costs.
Sat, Jan 19, 1:58 AM

Fri, Jan 18

nikic accepted D56865: [MergeFunc] Allow merging identical vararg functions using aliases.

On a related note, we have another case where thunks may be invalid due to CC restrictions: https://bugs.llvm.org/show_bug.cgi?id=40232

Fri, Jan 18, 11:45 AM
nikic added inline comments to D56907: [TTI] Add generic USUBSAT costs.
Fri, Jan 18, 11:33 AM

Thu, Jan 17

nikic created D56869: [CodeGen][X86] Expand UADDSAT to NOT+UMIN+ADD.
Thu, Jan 17, 11:33 AM
nikic updated the diff for D56355: [InstCombine] Simplify cttz/ctlz + icmp ugt/ult into mask check.

Remove unnecessary braces. Use getLimitedValue() only after range checks.

Thu, Jan 17, 10:28 AM

Wed, Jan 16

nikic added a comment to D56355: [InstCombine] Simplify cttz/ctlz + icmp ugt/ult into mask check.

Ping

Wed, Jan 16, 1:15 PM
nikic committed rL351375: [X86] Add additional saturating add/sub vector tests; NFC.
[X86] Add additional saturating add/sub vector tests; NFC
Wed, Jan 16, 12:57 PM

Tue, Jan 15

nikic committed rL351219: Reapply "[CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors".
Reapply "[CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors"
Tue, Jan 15, 10:47 AM
nikic closed D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.
Tue, Jan 15, 10:47 AM
nikic updated the diff for D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.

Rebase and update SLPVectorizer tests.

Tue, Jan 15, 8:33 AM

Mon, Jan 14

nikic reopened D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.

Gah, apparently I didn't run SLPVectorizer tests, which of course also change. Getting a WARNING: Found conflicting asm under the same prefix: 'AVX2' warning when regenerating those, so I've reverted for now and will look again tomorrow.

Mon, Jan 14, 2:25 PM
nikic committed rL351129: Revert "[CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors".
Revert "[CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors"
Mon, Jan 14, 2:22 PM
nikic committed rL351125: [CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors.
[CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors
Mon, Jan 14, 1:47 PM
nikic closed D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.
Mon, Jan 14, 1:47 PM
nikic added a comment to D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.

X86 vXi64 costs?

Mon, Jan 14, 5:59 AM

Sun, Jan 13

nikic added inline comments to D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.
Sun, Jan 13, 11:36 AM
nikic updated the diff for D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.

Use LegalOrCustom. Use UMAX+SUB pattern for scalar as well. Remove no longer necessary X86 specific changes.

Sun, Jan 13, 11:32 AM
nikic updated the diff for D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.

Rebase over NFC commit.

Sun, Jan 13, 9:46 AM
nikic committed rL351021: [X86] Rename overly verbose method; NFC.
[X86] Rename overly verbose method; NFC
Sun, Jan 13, 8:45 AM
nikic added a comment to D54749: Saturating float to int casts: Basics [1/n].

Ping

Sun, Jan 13, 6:24 AM
nikic added inline comments to D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.
Sun, Jan 13, 6:24 AM
nikic updated the diff for D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.

Rename excessively long method name. Change handling of AVX splitting. Move AVX512 costs to right category (pmaxuq is in AVX512F, so these shouldn't be in the BW cateogory).

Sun, Jan 13, 6:21 AM

Sat, Jan 12

nikic added inline comments to D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.
Sat, Jan 12, 6:07 AM
nikic added inline comments to D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.
Sat, Jan 12, 5:16 AM
nikic created D56636: [CodeGen][X86] Expand vector USUBSAT to UMAX+SUB.
Sat, Jan 12, 4:13 AM
nikic committed rL351003: [X86] Add more usub.sat vector tests; NFC.
[X86] Add more usub.sat vector tests; NFC
Sat, Jan 12, 3:47 AM
nikic committed rL350997: Reapply "[DemandedBits] Use SetVector for Worklist".
Reapply "[DemandedBits] Use SetVector for Worklist"
Sat, Jan 12, 1:13 AM
nikic closed D56362: [DemandedBits] Use SetVector for Worklist.
Sat, Jan 12, 1:13 AM

Fri, Jan 11

nikic committed rL350971: [ConstantFolding] Fold undef for integer intrinsics.
[ConstantFolding] Fold undef for integer intrinsics
Fri, Jan 11, 1:22 PM
nikic closed D55950: [ConstantFolding] Fold undef for integer intrinsics.
Fri, Jan 11, 1:21 PM

Thu, Jan 10

nikic updated the diff for D55950: [ConstantFolding] Fold undef for integer intrinsics.

Fix formatting, remove InstCombine/saturating-add-sub-vector.ll test in favor of ConstantFolding/saturating-add-sub.ll.

Thu, Jan 10, 1:31 PM
nikic added a comment to D55950: [ConstantFolding] Fold undef for integer intrinsics.

Ping

Thu, Jan 10, 9:33 AM
nikic added a comment to D56455: [ADT] Fix SmallDenseMap assertion with large InlineBuckets.

I should probably mention that this also changes the behavior for smaller inline buckets. If say we are in the small rep with InlineBuckets=16 and call grow(16), then before this change it would switch it to the large rep with 64 buckets, while after this change it will stay in the small rep with 16 buckets. If we want to keep it this way, then an alternative fix here would be to simply adjust the assertion and allow creating a large rep with InlineBuckets buckets.

Thu, Jan 10, 12:02 AM

Wed, Jan 9

nikic added inline comments to D56457: [WebAssembly][FastISel] Do not assume naive CmpInst lowering.
Wed, Jan 9, 11:59 PM

Tue, Jan 8

nikic added a comment to D56362: [DemandedBits] Use SetVector for Worklist.

I've submitted D56455 to fix the SmallDenseMap bug this triggered. Also reduced this to use 16 instead of 128 inline elements. That seems to be a more typical value and also sidesteps the issue :)

Tue, Jan 8, 2:32 PM
nikic updated the diff for D56362: [DemandedBits] Use SetVector for Worklist.

Use less inline elements in SmallSetVector.

Tue, Jan 8, 2:30 PM
nikic created D56455: [ADT] Fix SmallDenseMap assertion with large InlineBuckets.
Tue, Jan 8, 2:25 PM

Mon, Jan 7

nikic reopened D56362: [DemandedBits] Use SetVector for Worklist.

Aaand reverted :/ Assertion failure in clang CodeGen/builtins-systemz-zvector.c:

Mon, Jan 7, 10:22 AM
nikic committed rL350549: Revert "[DemandedBits] Use SetVector for Worklist".
Revert "[DemandedBits] Use SetVector for Worklist"
Mon, Jan 7, 10:19 AM
nikic committed rL350547: [DemandedBits] Use SetVector for Worklist.
[DemandedBits] Use SetVector for Worklist
Mon, Jan 7, 10:07 AM
nikic closed D56362: [DemandedBits] Use SetVector for Worklist.
Mon, Jan 7, 10:07 AM

Sun, Jan 6

nikic created D56362: [DemandedBits] Use SetVector for Worklist.
Sun, Jan 6, 9:50 AM

Sat, Jan 5

nikic updated the diff for D56355: [InstCombine] Simplify cttz/ctlz + icmp ugt/ult into mask check.

Create new compare instructions instead of modifying existing ones and manually managing worklist.

Sat, Jan 5, 12:15 PM
nikic added a comment to D56355: [InstCombine] Simplify cttz/ctlz + icmp ugt/ult into mask check.

Hm, why does this modify the existing instruction, and manually adds it to worklist,
instead of simply creating a new instruction? This is rather unusual for instcombine i think.

Sat, Jan 5, 11:07 AM
nikic updated the diff for D56355: [InstCombine] Simplify cttz/ctlz + icmp ugt/ult into mask check.

Split up functions for eq and non-eq icmps. Handle ctlz separately from cttz by going directly to the form using only a comparison. Rebase over improved tests with multiuse and vector variants.

Sat, Jan 5, 10:18 AM
nikic committed rL350471: [InstCombine] Improve cttz/ctlz + icmp tests; NFC.
[InstCombine] Improve cttz/ctlz + icmp tests; NFC
Sat, Jan 5, 9:40 AM
nikic created D56355: [InstCombine] Simplify cttz/ctlz + icmp ugt/ult into mask check.
Sat, Jan 5, 8:13 AM
nikic committed rL350468: [InstCombine] Add cttz/ctlz + icmp ugt/ult tests; NFC.
[InstCombine] Add cttz/ctlz + icmp ugt/ult tests; NFC
Sat, Jan 5, 7:56 AM
nikic committed rL350463: [InstCombine] Relax cttz/ctlz with select on zero.
[InstCombine] Relax cttz/ctlz with select on zero
Sat, Jan 5, 1:52 AM
nikic closed D55786: [InstCombine] Relax cttz/ctlz with select on zero .
Sat, Jan 5, 1:52 AM
nikic committed rL350462: [InstCombine] Add vector tests for select + ctlz/cttz; NFC.
[InstCombine] Add vector tests for select + ctlz/cttz; NFC
Sat, Jan 5, 1:52 AM

Fri, Jan 4

nikic committed rL350437: [X86] Fix warning; NFC.
[X86] Fix warning; NFC
Fri, Jan 4, 1:45 PM
nikic committed rL350435: [BDCE] Remove dead uses of arguments.
[BDCE] Remove dead uses of arguments
Fri, Jan 4, 1:26 PM
nikic closed D56247: [BDCE] Remove dead uses of arguments.
Fri, Jan 4, 1:26 PM

Thu, Jan 3

nikic added a comment to D55786: [InstCombine] Relax cttz/ctlz with select on zero .

Ping

Thu, Jan 3, 12:25 PM
nikic created D56247: [BDCE] Remove dead uses of arguments.
Thu, Jan 3, 12:11 AM

Wed, Jan 2

nikic committed rL350265: [BDCE] Fix typo in test; NFC.
[BDCE] Fix typo in test; NFC
Wed, Jan 2, 2:38 PM
nikic updated the diff for D55950: [ConstantFolding] Fold undef for integer intrinsics.

Handle overflowing mul with a fallthrough case.

Wed, Jan 2, 12:21 PM
nikic committed rL350257: [BDCE] Remove instructions without demanded bits.
[BDCE] Remove instructions without demanded bits
Wed, Jan 2, 12:06 PM
nikic closed D56185: [BDCE] Remove instructions without demanded bits.
Wed, Jan 2, 12:05 PM

Tue, Jan 1

nikic updated the diff for D56185: [BDCE] Remove instructions without demanded bits.

Rebase over regenerated test checks.

Tue, Jan 1, 4:41 AM
nikic committed rL350190: [BDCE] Regenerate test checks; NFC.
[BDCE] Regenerate test checks; NFC
Tue, Jan 1, 4:31 AM
nikic added inline comments to D56185: [BDCE] Remove instructions without demanded bits.
Tue, Jan 1, 3:57 AM
nikic created D56185: [BDCE] Remove instructions without demanded bits.
Tue, Jan 1, 3:40 AM
nikic committed rL350189: [BDCE] Remove -instsimplify from BDCE test; NFC.
[BDCE] Remove -instsimplify from BDCE test; NFC
Tue, Jan 1, 2:21 AM
nikic committed rL350188: Reapply "[BDCE][DemandedBits] Detect dead uses of undead instructions".
Reapply "[BDCE][DemandedBits] Detect dead uses of undead instructions"
Tue, Jan 1, 2:09 AM
nikic closed D55563: [BDCE][DemandedBits] Detect dead uses of undead instructions.
Tue, Jan 1, 2:09 AM

Mon, Dec 31

nikic updated the diff for D55563: [BDCE][DemandedBits] Detect dead uses of undead instructions.

Fix removal of dead uses. The previous version had a check whether the previous demanded bits are empty and only dropped the use from the DeadUses set in that case. The motivation for this was that the use could only be part of DeadUses if the demanded bits are empty, so we can save a redundant hash lookup. Of course, this is not actually true, because the previous demanded bits are for the instruction across all users, which is a superset of the demanded bits for a single use. (That being kind of the whole point of this change, I'm really not sure what I was thinking there...)

Mon, Dec 31, 7:00 AM

Sun, Dec 30

nikic added a comment to D56155: [docs] cttz and ctlz return poison, not undef, when argument is 0.

Based on the current documentation of poison values, selecting over poison is still poison by the first rule. I'm assuming that this is an inaccuracy in the documentation and selects are treated the same ways as phis? Otherwise the cited clang code would be affected.

Sun, Dec 30, 2:44 PM

Fri, Dec 28

nikic added a comment to D55950: [ConstantFolding] Fold undef for integer intrinsics.

Ping

Fri, Dec 28, 7:53 AM

Fri, Dec 21

nikic added a comment to D54749: Saturating float to int casts: Basics [1/n].

I think the consistency argument is good, so I'm in favour of the structure you chose now. My main issue at the moment is the tests: hard-coding register usage leads to very fragile tests.

Fri, Dec 21, 7:34 AM
nikic updated the diff for D54749: Saturating float to int casts: Basics [1/n].

Rebase

Fri, Dec 21, 7:22 AM
nikic updated the diff for D55950: [ConstantFolding] Fold undef for integer intrinsics.

Add ctpop comment.

Fri, Dec 21, 7:18 AM

Dec 20 2018

nikic added inline comments to D55950: [ConstantFolding] Fold undef for integer intrinsics.
Dec 20 2018, 12:46 PM
nikic created D55950: [ConstantFolding] Fold undef for integer intrinsics.
Dec 20 2018, 12:39 PM
nikic committed rL349806: [ConstantFolding] Consolidate and extend bitcount intrinsic tests; NFC.
[ConstantFolding] Consolidate and extend bitcount intrinsic tests; NFC
Dec 20 2018, 11:50 AM
nikic committed rL349805: [ConstantFolding] Add undef tests for overflow intrinsics; NFC.
[ConstantFolding] Add undef tests for overflow intrinsics; NFC
Dec 20 2018, 11:50 AM
nikic committed rL349804: [ConstantFolding] Regenerate test checks; NFC.
[ConstantFolding] Regenerate test checks; NFC
Dec 20 2018, 11:50 AM
nikic committed rL349803: [ConstantFolding] Add tests for funnel shifts with undef operands; NFC.
[ConstantFolding] Add tests for funnel shifts with undef operands; NFC
Dec 20 2018, 11:50 AM
nikic committed rL349802: [ConstantFolding] Add tests for sat add/sub with undefs; NFC.
[ConstantFolding] Add tests for sat add/sub with undefs; NFC
Dec 20 2018, 11:50 AM
nikic committed rL349801: [ConstantFolding] Split up saturating add/sub tests; NFC.
[ConstantFolding] Split up saturating add/sub tests; NFC
Dec 20 2018, 11:50 AM

Dec 19 2018

nikic reopened D55563: [BDCE][DemandedBits] Detect dead uses of undead instructions.

I've reverted this, because it causes enc-3des.execution_time from test-suite to fail (e.g. http://lab.llvm.org:8011/builders/clang-cmake-x86_64-sde-avx512-linux/builds/16746).

Dec 19 2018, 2:40 PM
nikic committed rL349684: Revert "[BDCE][DemandedBits] Detect dead uses of undead instructions".
Revert "[BDCE][DemandedBits] Detect dead uses of undead instructions"
Dec 19 2018, 2:12 PM
nikic committed rL349674: [BDCE][DemandedBits] Detect dead uses of undead instructions.
[BDCE][DemandedBits] Detect dead uses of undead instructions
Dec 19 2018, 11:59 AM
nikic closed D55563: [BDCE][DemandedBits] Detect dead uses of undead instructions.
Dec 19 2018, 11:59 AM
nikic added inline comments to D55563: [BDCE][DemandedBits] Detect dead uses of undead instructions.
Dec 19 2018, 5:18 AM
nikic updated the diff for D55563: [BDCE][DemandedBits] Detect dead uses of undead instructions.

Remove assert, check that instr is in AliveBits.

Dec 19 2018, 5:13 AM

Dec 18 2018

nikic committed rL349530: [InstCombine] Simplify cttz/ctlz + icmp eq/ne into mask check.
[InstCombine] Simplify cttz/ctlz + icmp eq/ne into mask check
Dec 18 2018, 12:03 PM
nikic closed D55745: [InstCombine] Simplify cttz/ctlz + icmp eq/ne into mask check.
Dec 18 2018, 12:03 PM
nikic added a comment to D55563: [BDCE][DemandedBits] Detect dead uses of undead instructions.

Ping

Dec 18 2018, 11:05 AM
nikic added inline comments to D55745: [InstCombine] Simplify cttz/ctlz + icmp eq/ne into mask check.
Dec 18 2018, 11:03 AM
nikic updated the diff for D55745: [InstCombine] Simplify cttz/ctlz + icmp eq/ne into mask check.

Add single use check and tests.

Dec 18 2018, 11:01 AM
nikic committed rL349520: [X86] Use SADDSAT/SSUBSAT instead of ADDS/SUBS.
[X86] Use SADDSAT/SSUBSAT instead of ADDS/SUBS
Dec 18 2018, 10:32 AM
nikic closed D55833: [X86] Use SADDSAT/SSUBSAT instead of ADDS/SUBS.
Dec 18 2018, 10:31 AM
nikic created D55833: [X86] Use SADDSAT/SSUBSAT instead of ADDS/SUBS.
Dec 18 2018, 9:14 AM
nikic added a comment to D55787: [X86] Use UADDSAT/USUBSAT instead of ADDUS/SUBUS.

@RKSimon Yeah, I plan to migrate the signed ones as well.

Dec 18 2018, 7:57 AM
nikic added a comment to rL349480: [SelectionDAG][X86] Fix [US](ADD|SUB)SAT vector legalization, add tests.

(I don't think this was reviewed in any differential?)
Were these tests crashing without that change?
If not, please, try to *always* add tests first.

Dec 18 2018, 5:38 AM
nikic committed rL349481: [X86] Use UADDSAT/USUBSAT instead of ADDUS/SUBUS.
[X86] Use UADDSAT/USUBSAT instead of ADDUS/SUBUS
Dec 18 2018, 5:26 AM