Page MenuHomePhabricator

Whitney (Whitney Tsang)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 29 2019, 6:22 PM (50 w, 3 d)

Recent Activity

Wed, Jan 15

Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Addressed Florian's latest comments.
Added two new test cases.

Wed, Jan 15, 4:07 PM · Restricted Project
Whitney added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Wed, Jan 15, 11:37 AM · Restricted Project
Whitney added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Wed, Jan 15, 11:27 AM · Restricted Project
Whitney added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Wed, Jan 15, 10:50 AM · Restricted Project
Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Addressed Florian's latest comments.

Wed, Jan 15, 10:50 AM · Restricted Project
Whitney added a comment to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

ping

Wed, Jan 15, 8:21 AM · Restricted Project

Thu, Jan 9

Whitney committed rGd27a15fed79c: [NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass. (authored by Whitney).
[NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass.
Thu, Jan 9, 8:21 AM
Whitney closed D72230: [NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass..
Thu, Jan 9, 8:21 AM · Restricted Project

Wed, Jan 8

Whitney added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Wed, Jan 8, 10:40 AM · Restricted Project
Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Addressed review comments.

Wed, Jan 8, 10:40 AM · Restricted Project
Whitney updated the diff for D72230: [NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass..
  1. Makes loops in simplified and LCSSA form in the beginning of LoopUnrollAndJamPass.
  2. Add LITs for new pass manager.
Wed, Jan 8, 10:02 AM · Restricted Project

Tue, Jan 7

Whitney added a comment to D72230: [NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass..

If UnJ needs loops in LoopSimplify form then it should request (or enforce) that loops are in that form. I think it can be done with AU.addRequiredID(LoopSimplifyID); (and maybe a DEPENDENCY on LoopSimplify?) That should hopefully mean that the tests don't need these adjustments.

In https://groups.google.com/forum/m/?fbclid=IwAR3jQc7xQaWv2ovAvFTNuZXFKvCBo5lRx-vt_kyomdmcBgYpcRy5YcaDa0s#!topic/llvm-dev/0K8gEZ22VOE,
You cannot reliably use the addRequired() method to force a transform pass to run before another pass
The addRequired method is designed to tell the PassManager which *analysis* passes to run before your pass.

Tue, Jan 7, 10:25 PM · Restricted Project
Whitney added inline comments to D72230: [NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass..
Tue, Jan 7, 1:17 PM · Restricted Project
Whitney added a comment to D72230: [NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass..

If UnJ needs loops in LoopSimplify form then it should request (or enforce) that loops are in that form. I think it can be done with AU.addRequiredID(LoopSimplifyID); (and maybe a DEPENDENCY on LoopSimplify?) That should hopefully mean that the tests don't need these adjustments.

Tue, Jan 7, 1:08 PM · Restricted Project
Whitney added a comment to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

ping

Tue, Jan 7, 10:14 AM · Restricted Project

Mon, Jan 6

Whitney updated the diff for D72230: [NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass..

Addressed review comment.

Mon, Jan 6, 3:22 PM · Restricted Project
Whitney updated the diff for D72230: [NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass..

Changing LoopUnrollAndJamPass to a function pass for old pass manager as well.

Mon, Jan 6, 12:05 PM · Restricted Project

Sun, Jan 5

Whitney created D72230: [NFCI][LoopUnrollAndJam] Changing LoopUnrollAndJamPass to a function pass..
Sun, Jan 5, 9:26 AM · Restricted Project

Tue, Dec 31

Whitney added a comment to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

@fhahn @jdoerfert What do you think of this now?

Tue, Dec 31, 5:32 AM · Restricted Project

Wed, Dec 25

Whitney closed D71878: [NFC][LoopFusion] Fix printing of the guard branch..

https://reviews.llvm.org/rGd1f41b2ca999

Wed, Dec 25, 8:21 PM · Restricted Project
Whitney committed rGd1f41b2ca999: [NFC][LoopFusion] Fix printing of the guard branch. Reviewer: kbarton… (authored by Whitney).
[NFC][LoopFusion] Fix printing of the guard branch. Reviewer: kbarton…
Wed, Dec 25, 6:50 PM
Whitney updated the diff for D71821: [LoopFusion] Move instructions from FC1.Preheader to FC0.Preheader when proven safe..

Address review comment.

Wed, Dec 25, 4:06 PM · Restricted Project
Whitney added inline comments to D71821: [LoopFusion] Move instructions from FC1.Preheader to FC0.Preheader when proven safe..
Wed, Dec 25, 10:39 AM · Restricted Project
Whitney updated the diff for D71821: [LoopFusion] Move instructions from FC1.Preheader to FC0.Preheader when proven safe..

Addressed review comments.

Wed, Dec 25, 10:39 AM · Restricted Project
Whitney created D71878: [NFC][LoopFusion] Fix printing of the guard branch..
Wed, Dec 25, 9:55 AM · Restricted Project

Tue, Dec 24

Whitney updated the diff for D71821: [LoopFusion] Move instructions from FC1.Preheader to FC0.Preheader when proven safe..

Added a new test case.

Tue, Dec 24, 5:15 PM · Restricted Project
Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Need a new way to check if isMoveForward(), after the isControlFlowEquivalent improvement.

Tue, Dec 24, 5:06 PM · Restricted Project

Mon, Dec 23

Whitney added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Mon, Dec 23, 6:31 PM · Restricted Project
Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Changed to use SmallVector instead of unordered_set.

Mon, Dec 23, 6:31 PM · Restricted Project

Sun, Dec 22

Whitney added a parent revision for D71821: [LoopFusion] Move instructions from FC1.Preheader to FC0.Preheader when proven safe.: D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Sun, Dec 22, 4:58 PM · Restricted Project
Whitney created D71821: [LoopFusion] Move instructions from FC1.Preheader to FC0.Preheader when proven safe..
Sun, Dec 22, 4:58 PM · Restricted Project
Whitney added a child revision for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent.: D71821: [LoopFusion] Move instructions from FC1.Preheader to FC0.Preheader when proven safe..
Sun, Dec 22, 4:58 PM · Restricted Project

Sat, Dec 21

Whitney added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Sat, Dec 21, 11:03 PM · Restricted Project
Whitney added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Sat, Dec 21, 10:53 PM · Restricted Project
Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Addressed review comments.

Sat, Dec 21, 10:44 PM · Restricted Project

Thu, Dec 19

Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Addressed Johannes's comments.

Thu, Dec 19, 8:59 PM · Restricted Project
Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Addressed Johannes's comments.

Thu, Dec 19, 6:04 PM · Restricted Project
Whitney added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Thu, Dec 19, 6:04 PM · Restricted Project

Dec 18 2019

Whitney added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Dec 18 2019, 8:11 PM · Restricted Project
Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Addressed all review comments.

Dec 18 2019, 8:11 PM · Restricted Project
Whitney added a comment to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

This is a quite deep introspection that I'd assume would be in the domain of some analysis, such as value numbering. It could ensure that equivalent conditional branches will take the same llvm::Value.

Dec 18 2019, 4:23 PM · Restricted Project
Whitney added inline comments to D71569: [LoopFusion] Ensure that both loops are guarded or neither are guarded..
Dec 18 2019, 3:45 PM · Restricted Project
Whitney committed rG9883d7edc65f: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. (authored by Whitney).
[LoopUtils] Updated deleteDeadLoop() to handle loop nest.
Dec 18 2019, 8:04 AM
Whitney closed D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .
Dec 18 2019, 8:04 AM · Restricted Project
Whitney updated the diff for D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..

Addressed a subset of Johannes's comments.

Dec 18 2019, 12:36 AM · Restricted Project

Dec 17 2019

Whitney updated the diff for D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .

Need to destroy the loop after removing from LI.

Dec 17 2019, 7:23 PM · Restricted Project
Whitney reopened D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .

To address memory leak.

Dec 17 2019, 7:23 PM · Restricted Project
Whitney committed rG36bdc3dc35a5: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch. (authored by Whitney).
[LoopFusion] Move instructions from FC0.Latch to FC1.Latch.
Dec 17 2019, 2:11 PM
Whitney closed D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..
Dec 17 2019, 2:10 PM · Restricted Project
Whitney abandoned D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..
Dec 17 2019, 1:25 PM · Restricted Project
Whitney updated the diff for D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..

Addressed Michael and Kit's comments.

Dec 17 2019, 1:15 PM · Restricted Project

Dec 16 2019

Whitney committed rGec4749e3b8d0: Revert "[LoopUtils] Updated deleteDeadLoop() to handle loop nest." (authored by Whitney).
Revert "[LoopUtils] Updated deleteDeadLoop() to handle loop nest."
Dec 16 2019, 7:59 PM
Whitney added a reverting change for rGcd09fee3d632: [LoopUtils] Updated deleteDeadLoop() to handle loop nest.: rGec4749e3b8d0: Revert "[LoopUtils] Updated deleteDeadLoop() to handle loop nest.".
Dec 16 2019, 7:59 PM
Whitney added a reverting change for rGc066ff11d84a: [LoopUtils] Updated deleteDeadLoop() to handle loop nest.: rGec4749e3b8d0: Revert "[LoopUtils] Updated deleteDeadLoop() to handle loop nest.".
Dec 16 2019, 7:59 PM
Whitney updated the diff for D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..

Move moveInstsBottomUp to CodeMoverUtils.

Dec 16 2019, 5:58 PM · Restricted Project
Whitney committed rGcd09fee3d632: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. (authored by Whitney).
[LoopUtils] Updated deleteDeadLoop() to handle loop nest.
Dec 16 2019, 5:22 PM
Whitney added inline comments to D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..
Dec 16 2019, 5:21 PM · Restricted Project
Whitney committed rGc066ff11d84a: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. (authored by Whitney).
[LoopUtils] Updated deleteDeadLoop() to handle loop nest.
Dec 16 2019, 5:12 PM
Whitney closed D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .
Dec 16 2019, 5:12 PM · Restricted Project
Whitney created D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Dec 16 2019, 3:48 PM · Restricted Project
Whitney added a comment to D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..

I was assuming you need this change for your use case. If getLoopGuardBranch already fits your use case, I indeed do not see a reason to change it?

Dec 16 2019, 3:38 PM · Restricted Project
Whitney added a comment to D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..

I did a test with a loop that has a call which may throw inside, and SCEV is able to calculate the trip count, add recurrence of the induction variable, etc. Maybe we can keep getLoopGuardBranch() as is, and not worry about instructions which not guaranteed to transfer execution to successors? What do you think @Meinersbur?

Dec 16 2019, 10:34 AM · Restricted Project
Whitney added inline comments to D71025: [LoopFusion] Restrict loop fusion to rotated loops..
Dec 16 2019, 10:16 AM · Restricted Project
Whitney added inline comments to D71025: [LoopFusion] Restrict loop fusion to rotated loops..
Dec 16 2019, 9:39 AM · Restricted Project

Dec 13 2019

Whitney updated the diff for D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..

[NFC] Update comment and fix typos.

Dec 13 2019, 5:07 PM · Restricted Project

Dec 12 2019

Whitney added inline comments to D71025: [LoopFusion] Restrict loop fusion to rotated loops..
Dec 12 2019, 4:12 PM · Restricted Project
Whitney updated the diff for D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..

use isGuaranteedToTransferExecutionToSuccessor instead of IsSafeToSpeculativelyExecute

Dec 12 2019, 12:57 PM · Restricted Project
Whitney added a comment to D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..

This doesn't make sense to me. I don't see why we need the speculation restriction here. The discussion mentions concern about side exits, but if so, that's a different property. (i.e. isGuaranteedToTransferToSuccessor)

Dec 12 2019, 12:07 PM · Restricted Project
Whitney updated the diff for D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..

clarify the comment.

Dec 12 2019, 8:23 AM · Restricted Project
Whitney added a comment to D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..

I think this restriction needs to be at least documented. But what's the reason for this restriction? Unless I am missing something, even if the instructions between the guard and the loop are not safe to speculate, the guard condition still applies to the loop, right?

Dec 12 2019, 7:17 AM · Restricted Project
Whitney updated the diff for D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..

Added comments to explain why the preheader and exit block should not contain instructions which are not safe to execute speculatively.

Dec 12 2019, 7:08 AM · Restricted Project

Dec 11 2019

Whitney created D71383: [LoopGuard] Instructions in loop preheader and loop exit must be safe to execute speculatively..
Dec 11 2019, 6:16 PM · Restricted Project

Dec 10 2019

Whitney updated the diff for D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .

Change use of auto.

Dec 10 2019, 11:42 AM · Restricted Project
Whitney updated the diff for D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .

Use removeChildLoop() and removeLoop() instead of erase().

Dec 10 2019, 11:32 AM · Restricted Project
Whitney updated the diff for D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .
Dec 10 2019, 7:42 AM · Restricted Project

Dec 9 2019

Whitney updated the diff for D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..

Addressed Johannes's comments. Will do the NFC commit to rename instructions in one of the LITs after https://reviews.llvm.org/D71025 is landed.

Dec 9 2019, 3:12 PM · Restricted Project
Whitney added a comment to D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..

We miss a negative test. I mean one with instruction(s) that cannot be moved.

Dec 9 2019, 12:25 PM · Restricted Project

Dec 7 2019

Whitney added a comment to D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .

what is missing to be correct for nested loops as well?

Dec 7 2019, 5:49 PM · Restricted Project
Whitney updated the summary of D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..
Dec 7 2019, 3:06 PM · Restricted Project
Whitney updated the summary of D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..
Dec 7 2019, 3:06 PM · Restricted Project
Whitney updated the summary of D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..
Dec 7 2019, 3:06 PM · Restricted Project
Whitney updated the summary of D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..
Dec 7 2019, 3:06 PM · Restricted Project
Whitney updated the summary of D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..
Dec 7 2019, 3:06 PM · Restricted Project
Whitney added a comment to D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..

Is there a mistake in the example? Every execution will end in the infinite loop header4. Why did you mean to move preheader3 instead of latch1?

Dec 7 2019, 3:06 PM · Restricted Project
Whitney added a parent revision for D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch.: D71025: [LoopFusion] Restrict loop fusion to rotated loops..
Dec 7 2019, 5:31 AM · Restricted Project
Whitney added a child revision for D71025: [LoopFusion] Restrict loop fusion to rotated loops.: D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..
Dec 7 2019, 5:31 AM · Restricted Project
Whitney created D71165: [LoopFusion] Move instructions from FC0.Latch to FC1.Latch..
Dec 7 2019, 5:28 AM · Restricted Project
Whitney added a comment to D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .

What does everyone think? Is deleteDeadLoop() intensionally work for innermost loops? Is adding deleteDeadLoopNest() or modifying deleteDeadLoop() to work for loops with any depth preferred?

Dec 7 2019, 5:22 AM · Restricted Project

Dec 4 2019

Whitney added a comment to D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .

Didn't notice Bardia already posted something similar.

Dec 4 2019, 10:59 AM · Restricted Project

Dec 2 2019

Whitney updated the diff for D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .

Removed unnecessary includes.

Dec 2 2019, 10:13 PM · Restricted Project
Whitney created D70939: [LoopUtils] Updated deleteDeadLoop() to handle loop nest. .
Dec 2 2019, 9:45 PM · Restricted Project

Nov 27 2019

Whitney closed D70619: [NFC][LoopFusion] Use isControlFlowEquivalent() from CodeMoverUtils..

landed

Nov 27 2019, 8:27 AM · Restricted Project

Nov 26 2019

Whitney added inline comments to D70049: [CodeMoverUtils] Added an API to check if an instruction can be safely moved before another instruction..
Nov 26 2019, 7:20 PM · Restricted Project

Nov 25 2019

Whitney committed rGaaf7f05a96e6: [NFC][LoopFusion] Use isControlFlowEquivalent() from CodeMoverUtils. Reviewer… (authored by Whitney).
[NFC][LoopFusion] Use isControlFlowEquivalent() from CodeMoverUtils. Reviewer…
Nov 25 2019, 9:57 AM
Whitney added inline comments to D70619: [NFC][LoopFusion] Use isControlFlowEquivalent() from CodeMoverUtils..
Nov 25 2019, 9:56 AM · Restricted Project

Nov 22 2019

Whitney created D70619: [NFC][LoopFusion] Use isControlFlowEquivalent() from CodeMoverUtils..
Nov 22 2019, 2:25 PM · Restricted Project
Whitney closed D70049: [CodeMoverUtils] Added an API to check if an instruction can be safely moved before another instruction..

Landed.

Nov 22 2019, 2:25 PM · Restricted Project

Nov 14 2019

Whitney updated the diff for D70049: [CodeMoverUtils] Added an API to check if an instruction can be safely moved before another instruction..

Addressed all comments from Bardia.

Nov 14 2019, 3:50 PM · Restricted Project
Whitney updated the diff for D70049: [CodeMoverUtils] Added an API to check if an instruction can be safely moved before another instruction..

With this change, no instructions are considered safe to move across instructions that may throw, or call instructions that may not return or may synchronize, which is straighter than @jdoerfert suggestion. We can generalize it when needed. @jdoerfert What do you think?

Nov 14 2019, 1:48 PM · Restricted Project

Nov 11 2019

Whitney added inline comments to D70049: [CodeMoverUtils] Added an API to check if an instruction can be safely moved before another instruction..
Nov 11 2019, 8:57 PM · Restricted Project