Page MenuHomePhabricator

hermord (Dmytro Shynkevych)
User

Projects

User does not belong to any projects.

User Details

User Since
Jul 31 2018, 9:55 PM (63 w, 2 d)

Recent Activity

Jan 19 2019

hermord added a comment to D56372: [NFC] Make vector types legal in UREM test.

@RKSimon Sorry, I should have mentioned in the summary that I don't have commit rights.

Jan 19 2019, 8:08 PM · Restricted Project

Jan 6 2019

hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Rebased on top of D56372.

Jan 6 2019, 7:25 PM · Restricted Project
hermord created D56372: [NFC] Make vector types legal in UREM test.
Jan 6 2019, 5:41 PM · Restricted Project

Dec 6 2018

hermord added a comment to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

@RKSimon I am sorry for the long radio silence. It is entirely my fault.

Dec 6 2018, 7:07 PM · Restricted Project

Sep 25 2018

hermord added inline comments to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).
Sep 25 2018, 4:53 PM · Restricted Project
hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Made a wrapper as dicussed.

Sep 25 2018, 4:40 PM · Restricted Project
hermord added inline comments to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).
Sep 25 2018, 6:38 AM · Restricted Project
hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

@lebedev.ri Sorry, couldn't find any instances of 4 x i16 in the nonsplat tests; I think I only had those in the splat ones. The patch no longer applied cleanly, so I rebased it again.

Sep 25 2018, 6:33 AM · Restricted Project

Sep 21 2018

hermord added a comment to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

@RKSimon should I make any other changes to this?

Sep 21 2018, 8:09 AM · Restricted Project

Sep 13 2018

hermord added inline comments to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).
Sep 13 2018, 9:25 PM · Restricted Project
hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Re-added previously commited tests.

Sep 13 2018, 9:21 PM · Restricted Project

Sep 12 2018

hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Rebased.

Sep 12 2018, 10:19 AM · Restricted Project

Sep 11 2018

hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Thank you for the review, @RKSimon. Made changes as directed.

Sep 11 2018, 4:07 PM · Restricted Project

Sep 10 2018

hermord added inline comments to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).
Sep 10 2018, 9:49 PM · Restricted Project
hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Apologies again for the delay.

  • Made cosmetic changes as directed by @lebedev.ri and added vector tests.
  • Disabled the fold for vector divisors with even values (see inline comment and test_urem_even_vec_i16).
Sep 10 2018, 9:34 PM · Restricted Project

Aug 31 2018

hermord added a comment to D50944: [Hexagon] [Test] Remove undef and infinite loop from test.

@kparzysz this is still ok after the last change?

Yes, I believe so. Tests pass successfully with this and this seems conceputally correct to me,

Aug 31 2018, 5:02 AM
hermord added a comment to D50944: [Hexagon] [Test] Remove undef and infinite loop from test.

@kparzysz this is still ok after the last change?

Aug 31 2018, 2:27 AM
hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Updated AArch64 tests.

Aug 31 2018, 1:47 AM · Restricted Project

Aug 30 2018

hermord added inline comments to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).
Aug 30 2018, 9:25 PM · Restricted Project
hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Comments addressed. The minsize condition needs some tweaking, it seems: the code with it works out to actually be longer on X86. Perhaps there should really be something like isIntDivShort.

Aug 30 2018, 8:52 PM · Restricted Project
hermord updated the diff for D50944: [Hexagon] [Test] Remove undef and infinite loop from test.

After a rebase and bisect, it turned out that the current form does rely on D50222. The extra mpy nodes come from this combine on the srem, which would not be reached with the proposed SREM optimization:

Aug 30 2018, 6:49 PM

Aug 29 2018

hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Thank you for the review, @lebedev.ri, addressed:

    • Added isIntDivCheap as an additional condition preventing this optimization. If this isn't customizable enough, we could probably do something like if (isIntDivCheap || (minsize && isIntDivShort)) where isIntDivShort can be overriden per-target.
  • I'm not an LLVM developer; as far as I understand, I can't commit anything
  • Added tests for AArch64
  • Removed the signed bits
Aug 29 2018, 6:32 PM · Restricted Project

Aug 20 2018

hermord added inline comments to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).
Aug 20 2018, 12:12 AM · Restricted Project
hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Thank you for the review, @lebedev.ri. Sorry for the delay; resolved most of the issues. Quick summary of the changes:

Aug 20 2018, 12:06 AM · Restricted Project

Aug 18 2018

hermord created D50944: [Hexagon] [Test] Remove undef and infinite loop from test.
Aug 18 2018, 7:16 PM

Aug 16 2018

hermord created D50884: [MergeFunctions] Merge global unnamed_addr functions as aliases.
Aug 16 2018, 11:45 PM

Aug 7 2018

hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

As pointed out by @lebedev.ri, tests were inadequate. Added new tests and stepped through existing ones, adding descriptions. This uncovered two more bugs, which were also fixed here (an extraneous Q.lshrInPlace() and division by D instead of D0). As far as I can see, the coverage now seems reasonable; please point out any cases I missed.

Aug 7 2018, 8:25 AM · Restricted Project

Aug 5 2018

hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

@majnemer Thanks; this was, in fact, incorrect. Now, to simplify the logic, the absolute value of D is taken and lshr is used.

Aug 5 2018, 10:10 AM · Restricted Project

Aug 3 2018

hermord updated the diff for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).

Made changes as requested.

Aug 3 2018, 4:20 PM · Restricted Project

Aug 2 2018

hermord added a reviewer for D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case): foad.
Aug 2 2018, 9:12 PM · Restricted Project
hermord added inline comments to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).
Aug 2 2018, 9:08 PM · Restricted Project
hermord added inline comments to D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).
Aug 2 2018, 9:07 PM · Restricted Project
hermord created D50222: [CodeGen] [SelectionDAG] More efficient code for X % C == 0 (UREM case).
Aug 2 2018, 8:58 PM · Restricted Project