Page MenuHomePhabricator

Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline

etherzhhb (Hongbin Zheng)
User

Projects

User does not belong to any projects.

User Details

User Since
Jul 30 2014, 7:37 PM (488 w, 19 h)

Recent Activity

Feb 9 2019

etherzhhb accepted D57566: Refactor setAlreadyUnrolled() and setAlreadyVectorized()..

LGTM with a suggestion

Feb 9 2019, 1:43 PM · Restricted Project

Oct 30 2018

etherzhhb accepted D51581: [IndVars] Strengthen restricton in rewriteLoopExitValues.

Sorry for the delay. I think since most of the suggested changes are actually in a follow up patch. LGTM

Oct 30 2018, 1:31 PM

Sep 18 2018

etherzhhb accepted D51584: [IndVars] Smart hard uses detection.

LGTM, but this patch may add a negligible increment on LLVM's compile time. Make sure you talk to some people that care about the LLVM compile time for their opinions

Sep 18 2018, 9:23 AM
etherzhhb added inline comments to D51584: [IndVars] Smart hard uses detection.
Sep 18 2018, 9:17 AM
etherzhhb added inline comments to D51581: [IndVars] Strengthen restricton in rewriteLoopExitValues.
Sep 18 2018, 8:58 AM
etherzhhb requested changes to D51581: [IndVars] Strengthen restricton in rewriteLoopExitValues.

For some unclear reason rewriteLoopExitValues considers recalculation
after the loop profitable if it has some "soft uses" outside the loop (i.e. any
use other than call and return), even if we have proved that it has a user inside
the loop which we think will not be optimized away.

This also confuse me. Why it must be "soft uses" outside the loop that matter?
What I can guess is that, if there is no use outside, there is *no need* to rewrite the exit value.

Sep 18 2018, 8:53 AM
etherzhhb added inline comments to D51404: [IndVars] Remove unreasonable checks in rewriteLoopExitValues.
Sep 18 2018, 8:34 AM

Sep 17 2018

etherzhhb added inline comments to D51404: [IndVars] Remove unreasonable checks in rewriteLoopExitValues.
Sep 17 2018, 7:57 PM
etherzhhb accepted D51404: [IndVars] Remove unreasonable checks in rewriteLoopExitValues.

LGTM

Sep 17 2018, 9:50 AM

Sep 3 2018

etherzhhb added a comment to D51286: [IndVars] Fix usage of SCEVExpander to not mess with SCEVConstant. PR38674.

LGTM in general.

Sep 3 2018, 9:03 AM

Mar 7 2018

etherzhhb added inline comments to D44244: [LLVM] Add -git-commit-after-all option.
Mar 7 2018, 9:37 PM · Restricted Project

Jan 18 2018

etherzhhb added a comment to D42227: [Refactor] Use enum instead of magic number in handleX86ForceAlignArgPointerAttr, NFC.

Thanks, I will commit tonight. If you want this patch before that, you could commit it for me.

Jan 18 2018, 2:36 PM
etherzhhb updated the diff for D42191: [RFC] [TargetTransformInfo] Introduce isRegisterRich, it returns true if the target architecture is register-rich..

Fix typo

Jan 18 2018, 2:32 PM
etherzhhb updated the diff for D42191: [RFC] [TargetTransformInfo] Introduce isRegisterRich, it returns true if the target architecture is register-rich..

Address Hal's comment

Jan 18 2018, 2:26 PM

Jan 17 2018

etherzhhb created D42227: [Refactor] Use enum instead of magic number in handleX86ForceAlignArgPointerAttr, NFC.
Jan 17 2018, 8:13 PM
etherzhhb added a comment to D42191: [RFC] [TargetTransformInfo] Introduce isRegisterRich, it returns true if the target architecture is register-rich..

In part, it looks like you're looking to modify heuristics that prevent increased spilling around calls. I can imagine that, in general, architectures with lots of registers suffer from less of that, but that's really a statement about the ABI of the call, not the architecture itself.

The original motivation is about hoisting the GEP, in general I want to GVN the gep like:

Jan 17 2018, 4:04 PM
etherzhhb added a comment to D42191: [RFC] [TargetTransformInfo] Introduce isRegisterRich, it returns true if the target architecture is register-rich..

There is already a function getNumberOfRegisters. Would it be enough to return some large number from it?

Jan 17 2018, 1:23 PM
etherzhhb updated the diff for D42191: [RFC] [TargetTransformInfo] Introduce isRegisterRich, it returns true if the target architecture is register-rich..

Implement isRegisterRich based on getNumberOfRegisters, and introduce a threshold to tell when the number of registers if big enough to be considered as "register-rich". Also include the usage of the isRegisterRich function in GVNHoist

Jan 17 2018, 1:23 PM
etherzhhb updated the summary of D42191: [RFC] [TargetTransformInfo] Introduce isRegisterRich, it returns true if the target architecture is register-rich..
Jan 17 2018, 11:45 AM
etherzhhb created D42191: [RFC] [TargetTransformInfo] Introduce isRegisterRich, it returns true if the target architecture is register-rich..
Jan 17 2018, 11:14 AM

Jan 3 2018

etherzhhb raised a concern with rL301706: Remove line and file from DINamespace..
Jan 3 2018, 12:14 PM

Nov 16 2017

etherzhhb added inline comments to D4609: Top-Down FunctionAttrs propagation for noalias, dereferenceable and nonnull inference.
Nov 16 2017, 11:45 PM

Oct 14 2017

etherzhhb added a comment to D38928: [LoopInfo][Refactor] Make SetLoopAlreadyUnrolled a member function of the Loop Pass, NFC..

LGTM

I think the Loop class has grown quite a bit, and we should pull out some of the utility functions into a separate LoopUtils namespace, but this patch does not need to be blocked on that.

Oct 14 2017, 8:58 PM
etherzhhb updated the diff for D38928: [LoopInfo][Refactor] Make SetLoopAlreadyUnrolled a member function of the Loop Pass, NFC..

Update comments

Oct 14 2017, 8:22 PM
etherzhhb created D38928: [LoopInfo][Refactor] Make SetLoopAlreadyUnrolled a member function of the Loop Pass, NFC..
Oct 14 2017, 8:20 PM

Oct 10 2017

etherzhhb updated the diff for D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.

Delete the redundant getSCEVAtScope

Oct 10 2017, 11:07 PM
etherzhhb added inline comments to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Oct 10 2017, 4:02 PM

Oct 9 2017

etherzhhb updated the diff for D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.

Update comments

Oct 9 2017, 9:30 PM
etherzhhb added a comment to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.

Ping?

Oct 9 2017, 10:27 AM

Oct 7 2017

etherzhhb added inline comments to D38255: [WIP] Polyhedral Value Analysis.
Oct 7 2017, 2:19 PM

Oct 3 2017

etherzhhb updated the diff for D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.

Address reviewer comments

Oct 3 2017, 8:09 PM
etherzhhb added inline comments to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Oct 3 2017, 10:02 AM
etherzhhb updated the diff for D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.

Partially address reviewer's comment. This is a WIP patch

Oct 3 2017, 10:00 AM

Oct 2 2017

etherzhhb added inline comments to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Oct 2 2017, 3:17 PM
etherzhhb added inline comments to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Oct 2 2017, 2:19 PM
etherzhhb added inline comments to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Oct 2 2017, 2:16 PM

Sep 30 2017

etherzhhb added inline comments to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Sep 30 2017, 9:29 PM
etherzhhb updated the diff for D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.

Update format

Sep 30 2017, 9:25 PM
etherzhhb updated the diff for D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.

Looks like I need to pass the SCEVExpander from the IndVarSimpilfy pass to coordinate SCEV rewrite, otherwise we will fail test/Transforms/IndVarSimplify/pr20680.ll

Sep 30 2017, 9:22 PM
etherzhhb added inline comments to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Sep 30 2017, 9:17 AM
etherzhhb updated the diff for D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.

Address reviewer's comments

Sep 30 2017, 9:15 AM

Sep 29 2017

etherzhhb added inline comments to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Sep 29 2017, 1:20 PM
etherzhhb added inline comments to D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Sep 29 2017, 12:40 PM
etherzhhb created D38415: [SimplifyIndVar] Replace IVUsers with loop invariant if possible.
Sep 29 2017, 10:22 AM

Sep 26 2017

etherzhhb added inline comments to D38272: [SimplifyIndVar] Constant fold IV users.
Sep 26 2017, 3:30 PM
etherzhhb updated subscribers of D38255: [WIP] Polyhedral Value Analysis.
Sep 26 2017, 3:29 PM
etherzhhb created D38272: [SimplifyIndVar] Constant fold IV users.
Sep 26 2017, 3:29 PM
etherzhhb updated the diff for D38272: [SimplifyIndVar] Constant fold IV users.

Fix typo

Sep 26 2017, 3:29 PM

Sep 25 2017

etherzhhb updated the diff for D38072: [SimplifyIndvar] Replace the srem used by IV if we can prove both of its operands are non-negative.

address comments from the reviewer

Sep 25 2017, 9:29 AM
etherzhhb added inline comments to D38072: [SimplifyIndvar] Replace the srem used by IV if we can prove both of its operands are non-negative.
Sep 25 2017, 8:58 AM

Sep 21 2017

etherzhhb updated the diff for D38072: [SimplifyIndvar] Replace the srem used by IV if we can prove both of its operands are non-negative.

Update comment

Sep 21 2017, 7:52 AM

Sep 20 2017

etherzhhb updated the diff for D38072: [SimplifyIndvar] Replace the srem used by IV if we can prove both of its operands are non-negative.

update patch based on the comments

Sep 20 2017, 8:38 PM
etherzhhb added inline comments to D38072: [SimplifyIndvar] Replace the srem used by IV if we can prove both of its operands are non-negative.
Sep 20 2017, 10:51 AM
etherzhhb updated the diff for D38072: [SimplifyIndvar] Replace the srem used by IV if we can prove both of its operands are non-negative.

Update comment

Sep 20 2017, 12:48 AM
etherzhhb updated the diff for D38072: [SimplifyIndvar] Replace the srem used by IV if we can prove both of its operands are non-negative.

Update comment

Sep 20 2017, 12:37 AM
etherzhhb updated the diff for D38072: [SimplifyIndvar] Replace the srem used by IV if we can prove both of its operands are non-negative.

Update patch to address reviewer's request

Sep 20 2017, 12:35 AM

Sep 19 2017

etherzhhb created D38072: [SimplifyIndvar] Replace the srem used by IV if we can prove both of its operands are non-negative.
Sep 19 2017, 7:17 PM

Aug 16 2017

etherzhhb added a comment to D36800: Add rewrite by-reference parameter pass.

It's certainly not too late. Until now it seemed to me like a very specific optimization for gfortran. I did not see any such examples before. If we can generalize this, we can certainly try to upstream this. Could you share some of the examples you are seeing?

Aug 16 2017, 11:00 PM · Restricted Project
etherzhhb added a comment to D36800: Add rewrite by-reference parameter pass.

Sorry this may be too late. Alexandre and me had discussed similar problem (but not exactly the same)

  1. maybe we could improve the ArgumentPromotion pass for this
  2. this pass seems to be generic, maybe we could move this to LLVM?
Aug 16 2017, 10:30 PM · Restricted Project

Aug 9 2017

etherzhhb added inline comments to D36425: [ZoneAlgo] Allow two writes that write identical values into same array slot.
Aug 9 2017, 12:15 AM · Restricted Project

Aug 7 2017

etherzhhb added inline comments to D36425: [ZoneAlgo] Allow two writes that write identical values into same array slot.
Aug 7 2017, 3:55 PM · Restricted Project
etherzhhb added inline comments to D36425: [ZoneAlgo] Allow two writes that write identical values into same array slot.
Aug 7 2017, 3:39 PM · Restricted Project
etherzhhb added inline comments to D36425: [ZoneAlgo] Allow two writes that write identical values into same array slot.
Aug 7 2017, 3:38 PM · Restricted Project

Aug 1 2017

etherzhhb created D36210: [LLVM] [RegionInfo] Introduce getExitingBlocks to get all predecessors of Exit in the current region..
Aug 1 2017, 10:55 PM

Jul 25 2017

etherzhhb added a comment to D35858: [RFC] [LLVM] [LazyValueInfo] Introduce getRecurringEdgeValue to handle simple recurrence.

Could you please quantify the effect that this has on compile time? Time for an optimized -j1 compile of LLVM itself is reasonable. Also it would be nice to know what effect this has on generated code.

Jul 25 2017, 4:12 PM
etherzhhb created D35858: [RFC] [LLVM] [LazyValueInfo] Introduce getRecurringEdgeValue to handle simple recurrence.
Jul 25 2017, 2:52 PM

Jul 17 2017

etherzhhb added a comment to D35471: [Polly] [RFC] Calculate AST expression type.

Just out of curiosity, are we supposed to change the isl inside polly? what is the relationship between this isl and the "upstream" isl?

Jul 17 2017, 4:24 PM

Jun 26 2017

etherzhhb resigned from D34598: ScalarEvolution: Add URem support.
Jun 26 2017, 3:15 PM

May 11 2017

etherzhhb updated the diff for D33089: [Polly] Generate more 'canonical' induction variable if we can prove there is no overflow..

Fix typo

May 11 2017, 9:46 AM
etherzhhb updated the diff for D33089: [Polly] Generate more 'canonical' induction variable if we can prove there is no overflow..

Address Tobias's comment

May 11 2017, 9:44 AM

May 10 2017

etherzhhb created D33089: [Polly] Generate more 'canonical' induction variable if we can prove there is no overflow..
May 10 2017, 8:53 PM

Apr 28 2017

etherzhhb added inline comments to D32639: [Polly] [Fortran Support] Add pattern matching to find Fortran array descriptor.
Apr 28 2017, 9:40 AM

Apr 26 2017

etherzhhb updated the diff for D32581: [Polly] Do not introduce address space cast.

Fix the test case.

Apr 26 2017, 11:39 PM · Restricted Project
etherzhhb removed a reviewer for D32581: [Polly] Do not introduce address space cast: pollydev.
Apr 26 2017, 11:37 PM · Restricted Project
etherzhhb updated the diff for D32581: [Polly] Do not introduce address space cast.

Add testcase

Apr 26 2017, 11:34 PM · Restricted Project
etherzhhb added a reviewer for D32581: [Polly] Do not introduce address space cast: alexandre.isoard.
Apr 26 2017, 11:15 PM · Restricted Project
etherzhhb added a reviewer for D32581: [Polly] Do not introduce address space cast: Meinersbur.
Apr 26 2017, 11:13 PM · Restricted Project
etherzhhb added a comment to D32581: [Polly] Do not introduce address space cast.

I want to also include a test case, if you can point me to the test case related to IslNodeBuilder::preloadUnconditionally, I can add one.
Let me search polly test dir at the same time

Apr 26 2017, 11:11 PM · Restricted Project
etherzhhb created D32581: [Polly] Do not introduce address space cast.
Apr 26 2017, 11:10 PM · Restricted Project
etherzhhb added inline comments to D32431: [Polly] Added OpenCL Runtime to GPURuntime Library for GPGPU CodeGen.
Apr 26 2017, 12:12 AM · Restricted Project

Apr 25 2017

etherzhhb added inline comments to D32431: [Polly] Added OpenCL Runtime to GPURuntime Library for GPGPU CodeGen.
Apr 25 2017, 5:12 PM · Restricted Project

Mar 30 2017

etherzhhb updated the diff for D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.

fix the last few things before pushing the commit

Mar 30 2017, 3:05 PM
etherzhhb added a comment to D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.

Comments inline.

You can also do this same rewrite within SCEV. That is, try to have getSCEV(sdiv instruction) return a SCEVUDivExpr if legal.

This also sounds reasonable and I can also look at that after this.
Just a quick question: are we suppose to use getSCEVAtScope in getSCEV?

Mar 30 2017, 2:56 PM
etherzhhb updated the diff for D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.

address sanjoy 's comment

Mar 30 2017, 2:51 PM
etherzhhb added inline comments to D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.
Mar 30 2017, 12:56 AM
etherzhhb updated the diff for D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.

Add more testcases

Mar 30 2017, 12:51 AM

Mar 29 2017

etherzhhb updated the summary of D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.
Mar 29 2017, 11:35 PM
etherzhhb added a comment to D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.

Hi Tobias

Mar 29 2017, 11:33 PM
etherzhhb updated subscribers of D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.
Mar 29 2017, 8:48 PM
etherzhhb added inline comments to D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.
Mar 29 2017, 8:39 PM
etherzhhb created D31488: [SimplifyIndvar] Replace the sdiv used by IV if we can prove both of its operands are non-negative.
Mar 29 2017, 8:38 PM

Jan 30 2017

etherzhhb added a comment to D28050: [Clang][Driver] Clean up Clang::ConstructJob a little bit, NFC.

I think this patch is an improvement, but Clang::ConstructJob is still one giant function.

Do you have ideas to improve readability of this function or plans to further reduce its size?

Jan 30 2017, 11:46 AM

Jan 19 2017

etherzhhb added a comment to D28020: [Polly] Align newly created arrays to the first level cache line boundary.

Interesting, maybe we need to get this from TargetTransformInfo eventually, because I saw a similar global variable/option in LoadStoreVectorizer as well.

Jan 19 2017, 3:21 PM

Jan 14 2017

etherzhhb retitled D28739: Fix compilation on MSVC, NFC from to Fix compilation on MSVC, NFC .
Jan 14 2017, 9:59 PM

Jan 11 2017

etherzhhb retitled D28595: [RFC] Introduce directive.scope.entry and directive.scope.exit for IR-level Region Annotation from to [RFC] Introduce directive.scope.entry and directive.scope.exit for IR-level Region Annotation.
Jan 11 2017, 10:01 PM

Jan 10 2017

etherzhhb added a comment to D28518: [Polly] Canonicalize arrays according to base-ptr equivalence class.

testcase?

Jan 10 2017, 10:22 AM · Restricted Project

Dec 22 2016

etherzhhb updated subscribers of D28050: [Clang][Driver] Clean up Clang::ConstructJob a little bit, NFC.
Dec 22 2016, 2:09 AM
etherzhhb retitled D28050: [Clang][Driver] Clean up Clang::ConstructJob a little bit, NFC from to [Clang][Driver] Clean up Clang::ConstructJob a little bit, NFC.
Dec 22 2016, 2:07 AM

Oct 29 2016

etherzhhb closed D25861: Remove the unused POLLY_LINK_LIBS for linking polly into tools.

This is pushed, phabricator didn't update this patch's status

Oct 29 2016, 11:55 PM

Oct 21 2016

etherzhhb added a comment to D25861: Remove the unused POLLY_LINK_LIBS for linking polly into tools.

Are you going to review the removal of POLLY_LINK_LIBS in polly and clang separately?

Oct 21 2016, 8:19 AM