haicheng (Haicheng Wu)
User

Projects

User does not belong to any projects.

User Details

User Since
Aug 26 2015, 1:15 PM (160 w, 3 d)

Recent Activity

May 19 2018

haicheng committed rL332813: [GlobalMerge] Exit early if only one global is to be merged.
[GlobalMerge] Exit early if only one global is to be merged
May 19 2018, 11:04 AM
haicheng closed D46640: [GlobalMerge] Exit early if only one global is to be merged.
May 19 2018, 11:04 AM

May 15 2018

haicheng updated the diff for D46640: [GlobalMerge] Exit early if only one global is to be merged.

Change the test case. Thank you.

May 15 2018, 6:12 PM

May 11 2018

haicheng updated the diff for D46640: [GlobalMerge] Exit early if only one global is to be merged.

Fix the test case. Thank you, Quentin.

May 11 2018, 6:37 PM

May 10 2018

haicheng updated the diff for D46640: [GlobalMerge] Exit early if only one global is to be merged.

Add the requested comment. Thank you for reviewing this.

May 10 2018, 12:20 PM
haicheng committed rL332015: [CGP] Split large data structres to sink more GEPs.
[CGP] Split large data structres to sink more GEPs
May 10 2018, 11:31 AM
haicheng closed D42759: [CGP] Split large data structres to sink more GEPs.
May 10 2018, 11:31 AM

May 9 2018

haicheng created D46640: [GlobalMerge] Exit early if only one global is to be merged.
May 9 2018, 8:10 AM
haicheng added a comment to D42759: [CGP] Split large data structres to sink more GEPs.

Kindly Ping

May 9 2018, 7:16 AM

May 2 2018

haicheng updated the diff for D42759: [CGP] Split large data structres to sink more GEPs.

Add one more AssertingVH

May 2 2018, 6:09 AM

May 1 2018

haicheng updated the diff for D42759: [CGP] Split large data structres to sink more GEPs.

Add more AssertingVH.

May 1 2018, 7:14 AM

Apr 26 2018

haicheng committed rL330965: [GlobalMerge] Fix a typo.
[GlobalMerge] Fix a typo
Apr 26 2018, 11:00 AM
haicheng updated the diff for D42759: [CGP] Split large data structres to sink more GEPs.

Address Eli's comments. Thank you.

Apr 26 2018, 9:51 AM

Apr 18 2018

haicheng added inline comments to D42759: [CGP] Split large data structres to sink more GEPs.
Apr 18 2018, 1:36 PM
haicheng updated the diff for D42759: [CGP] Split large data structres to sink more GEPs.

Address Eli's comments. Thank you very much, Eli.

Apr 18 2018, 1:34 PM

Apr 16 2018

haicheng committed rL330143: [SLP] Use getExtractWithExtendCost() to compute the scalar cost of….
[SLP] Use getExtractWithExtendCost() to compute the scalar cost of…
Apr 16 2018, 11:14 AM
haicheng closed D45469: [SLP] Use getExtractWithExtendCost() to compute the scalar cost of extractelement/ext pair.
Apr 16 2018, 11:14 AM

Apr 13 2018

haicheng updated the diff for D45469: [SLP] Use getExtractWithExtendCost() to compute the scalar cost of extractelement/ext pair.

Address Alexey's comments. Thank you.

Apr 13 2018, 4:20 PM
haicheng added inline comments to D45469: [SLP] Use getExtractWithExtendCost() to compute the scalar cost of extractelement/ext pair.
Apr 13 2018, 12:39 PM
haicheng updated the diff for D45469: [SLP] Use getExtractWithExtendCost() to compute the scalar cost of extractelement/ext pair.

Address Alexey's comments.

Apr 13 2018, 11:15 AM

Apr 11 2018

haicheng updated the diff for D45469: [SLP] Use getExtractWithExtendCost() to compute the scalar cost of extractelement/ext pair.

Check the users of Ext now.

Apr 11 2018, 1:32 PM
haicheng updated the diff for D45469: [SLP] Use getExtractWithExtendCost() to compute the scalar cost of extractelement/ext pair.

Rebased the test case. Thank you for taking a look.

Apr 11 2018, 8:37 AM
haicheng committed rL329818: [SLP] update a test case. NFC..
[SLP] update a test case. NFC.
Apr 11 2018, 8:15 AM

Apr 9 2018

haicheng created D45469: [SLP] Use getExtractWithExtendCost() to compute the scalar cost of extractelement/ext pair.
Apr 9 2018, 6:09 PM

Apr 3 2018

haicheng added a comment to D42759: [CGP] Split large data structres to sink more GEPs.

Kindly Ping

Apr 3 2018, 8:00 AM

Apr 2 2018

haicheng committed rL329035: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable"….
[SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable"…
Apr 2 2018, 5:08 PM
haicheng closed D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.
Apr 2 2018, 5:08 PM
haicheng added a comment to D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.

Kindly Ping

Apr 2 2018, 5:52 AM

Mar 29 2018

haicheng committed rL328798: [JumpThreading] Don't select an edge that we know we can't thread.
[JumpThreading] Don't select an edge that we know we can't thread
Mar 29 2018, 9:04 AM
haicheng closed D42260: [JumpThreading] Don't select an edge that we know we can't thread.
Mar 29 2018, 9:04 AM

Mar 28 2018

haicheng updated the diff for D42260: [JumpThreading] Don't select an edge that we know we can't thread.

Fixed a segment fault bug with a new test case, fixed an existing test case, and fixed the format.

Mar 28 2018, 12:26 PM
haicheng commandeered D42260: [JumpThreading] Don't select an edge that we know we can't thread.
Mar 28 2018, 12:25 PM

Mar 27 2018

haicheng added inline comments to D42260: [JumpThreading] Don't select an edge that we know we can't thread.
Mar 27 2018, 11:12 AM
haicheng added inline comments to D42759: [CGP] Split large data structres to sink more GEPs.
Mar 27 2018, 11:01 AM
haicheng updated the diff for D42759: [CGP] Split large data structres to sink more GEPs.

Update to address Serguei's comments. Thank you for taking a look.

Mar 27 2018, 11:01 AM
haicheng added a comment to D40097: [Inliner][NewPM] Inline functions outside of current SCC first.

Thank you, Piotr.

Mar 27 2018, 8:44 AM

Mar 26 2018

haicheng updated the diff for D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.

Rebase the test case.

Mar 26 2018, 12:17 PM
haicheng committed rL328572: [SLP] Add more checks to a test case. NFC..
[SLP] Add more checks to a test case. NFC.
Mar 26 2018, 12:02 PM
haicheng updated the diff for D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.

Updated to address Alexey's latest comments. Thank you again.

Mar 26 2018, 11:40 AM
haicheng updated the diff for D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.

Rebase and update the patch.

Mar 26 2018, 10:10 AM
haicheng committed rL328546: [SLP] Add a test case. NFC..
[SLP] Add a test case. NFC.
Mar 26 2018, 9:51 AM
haicheng added inline comments to D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.
Mar 26 2018, 9:22 AM
haicheng added inline comments to D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.
Mar 26 2018, 9:10 AM
haicheng updated the diff for D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.

Update to address Alexey's comments. Thank you very much.

Mar 26 2018, 9:09 AM

Mar 24 2018

haicheng abandoned D44565: [SLP] Add a check before skipping inserting a trunc after z|sext vectorization tree root.

Abandon in favor of D44868.

Mar 24 2018, 9:54 AM
haicheng created D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.
Mar 24 2018, 9:53 AM

Mar 22 2018

haicheng added a comment to D44565: [SLP] Add a check before skipping inserting a trunc after z|sext vectorization tree root.

Matt, what do you think?

Mar 22 2018, 7:33 AM

Mar 21 2018

haicheng updated the diff for D42759: [CGP] Split large data structres to sink more GEPs.

Address Jun's comments.

Mar 21 2018, 10:19 AM

Mar 20 2018

haicheng added a comment to D42759: [CGP] Split large data structres to sink more GEPs.

Kindly Ping #3

Mar 20 2018, 9:45 AM

Mar 16 2018

haicheng created D44565: [SLP] Add a check before skipping inserting a trunc after z|sext vectorization tree root.
Mar 16 2018, 7:19 AM

Mar 14 2018

haicheng accepted D44219: [ConstantFolding, InstSimplify] Handle more vector GEPs.

LGTM

Mar 14 2018, 9:11 AM

Mar 13 2018

haicheng committed rL327433: [SLP] clean some formats.
[SLP] clean some formats
Mar 13 2018, 11:49 AM
haicheng committed rL327395: [TTI] Fix a typo in the comment.
[TTI] Fix a typo in the comment
Mar 13 2018, 6:55 AM

Mar 8 2018

haicheng added a comment to D42759: [CGP] Split large data structres to sink more GEPs.

Kindly Ping #2

Mar 8 2018, 9:29 AM

Mar 1 2018

haicheng added a comment to D42759: [CGP] Split large data structres to sink more GEPs.

Kindly ping. I am appreciated to take any advice.

Mar 1 2018, 8:43 AM

Feb 22 2018

haicheng updated the diff for D42759: [CGP] Split large data structres to sink more GEPs.

Made some changes to improve the readability.

Feb 22 2018, 9:54 AM

Feb 18 2018

haicheng committed rL325459: [AArch64] Coalesce Copy Zero during instruction selection.
[AArch64] Coalesce Copy Zero during instruction selection
Feb 18 2018, 5:54 AM
haicheng closed D36104: [AArch64] Coalesce Copy Zero during instruction selection.
Feb 18 2018, 5:54 AM

Feb 16 2018

haicheng updated the diff for D42759: [CGP] Split large data structres to sink more GEPs.
  • Completely remove the check of base types. So, any large data structure is supported.
Feb 16 2018, 7:18 AM

Feb 10 2018

haicheng updated the diff for D42759: [CGP] Split large data structres to sink more GEPs.

I made two changes to address the comments.

Feb 10 2018, 6:22 PM

Feb 1 2018

haicheng added inline comments to D42260: [JumpThreading] Don't select an edge that we know we can't thread.
Feb 1 2018, 11:54 AM

Jan 31 2018

haicheng added inline comments to D42260: [JumpThreading] Don't select an edge that we know we can't thread.
Jan 31 2018, 2:19 PM
haicheng accepted D42262: [JumpThreading] Don't restrict cast-traversal to i1.

LGTM

Jan 31 2018, 1:31 PM
haicheng added a comment to D42262: [JumpThreading] Don't restrict cast-traversal to i1.

Hi Keno,

Jan 31 2018, 1:17 PM
haicheng added inline comments to D42759: [CGP] Split large data structres to sink more GEPs.
Jan 31 2018, 1:06 PM
haicheng created D42759: [CGP] Split large data structres to sink more GEPs.
Jan 31 2018, 12:28 PM

Dec 27 2017

haicheng updated the diff for D40097: [Inliner][NewPM] Inline functions outside of current SCC first.

Now I only move the callsites whose callees also call the callers to the end of the inline list to delay the creation of recursive functions. Is it more acceptable?

Dec 27 2017, 5:41 PM

Dec 22 2017

haicheng committed rL321366: [InlineCost] Find more free binary operations.
[InlineCost] Find more free binary operations
Dec 22 2017, 9:10 AM
haicheng closed D41494: [InlineCost] Find more free binary operations.
Dec 22 2017, 9:10 AM

Dec 21 2017

haicheng created D41494: [InlineCost] Find more free binary operations.
Dec 21 2017, 8:04 AM

Dec 19 2017

haicheng committed rL321107: [CGP] Format. NFC.
[CGP] Format. NFC
Dec 19 2017, 12:54 PM
haicheng committed rL321098: [SeparateConstOffsetFromGEP] Fix a typo. NFC..
[SeparateConstOffsetFromGEP] Fix a typo. NFC.
Dec 19 2017, 10:50 AM
haicheng committed rL321075: [InlineCost] Skip volatile loads when looking for repeated loads.
[InlineCost] Skip volatile loads when looking for repeated loads
Dec 19 2017, 5:44 AM

Dec 18 2017

haicheng added a comment to D40097: [Inliner][NewPM] Inline functions outside of current SCC first.

Kindly Ping (#3)

Dec 18 2017, 10:56 AM

Dec 15 2017

haicheng committed rL320814: [InlineCost] Find repeated loads in the callee.
[InlineCost] Find repeated loads in the callee
Dec 15 2017, 6:35 AM
This revision was not accepted when it landed; it landed in state Needs Review.
Dec 15 2017, 6:35 AM

Dec 14 2017

haicheng committed rL320699: [InlineCost] Tracking Values through PHI Nodes.
[InlineCost] Tracking Values through PHI Nodes
Dec 14 2017, 6:37 AM
haicheng closed D38594: [InlineCost] Tracking Values through PHI Nodes.
Dec 14 2017, 6:37 AM

Dec 13 2017

haicheng updated the diff for D38594: [InlineCost] Tracking Values through PHI Nodes.

Thank you very much, Easwaran. The new code looks much simpler. I will commit soon.

Dec 13 2017, 6:30 PM

Dec 11 2017

haicheng added a comment to D33946: [InlineCost] Find identical loads in the callee.

Thank you, Chad. I will wait for a couple of days before I commit this patch in case I will get some new comments.

Dec 11 2017, 10:19 AM
haicheng added a comment to D38594: [InlineCost] Tracking Values through PHI Nodes.

Kindly Ping (#3)

Dec 11 2017, 7:18 AM
haicheng added a comment to D40097: [Inliner][NewPM] Inline functions outside of current SCC first.

Kindly Ping (#2).

Dec 11 2017, 7:17 AM

Dec 9 2017

haicheng updated the diff for D33946: [InlineCost] Find identical loads in the callee.

Thank you, Jun.

Dec 9 2017, 1:55 PM

Dec 4 2017

haicheng committed rL319683: [ConstantFold] Support vector index when factoring out GEP index into preceding….
[ConstantFold] Support vector index when factoring out GEP index into preceding…
Dec 4 2017, 11:57 AM
haicheng closed D39556: [ConstantFold] Support vector index when factoring out GEP index into preceding dimensions by committing rL319683: [ConstantFold] Support vector index when factoring out GEP index into preceding….
Dec 4 2017, 11:57 AM
haicheng added a comment to D40097: [Inliner][NewPM] Inline functions outside of current SCC first.

Kindly Ping.

Dec 4 2017, 7:35 AM
haicheng added a comment to D38594: [InlineCost] Tracking Values through PHI Nodes.

Kindly Ping (#2)

Dec 4 2017, 7:34 AM

Dec 3 2017

haicheng added a comment to D33946: [InlineCost] Find identical loads in the callee.

I ran the spec2006/17 performance again on top of the ToT. Here is the number:

Dec 3 2017, 7:02 PM

Dec 2 2017

haicheng updated the diff for D39556: [ConstantFold] Support vector index when factoring out GEP index into preceding dimensions.

Address Matt's comments. Thank you.

Dec 2 2017, 5:16 AM

Nov 27 2017

haicheng added a comment to D33946: [InlineCost] Find identical loads in the callee.

Kindly Ping (#8)

Nov 27 2017, 6:11 AM
haicheng added a comment to D38594: [InlineCost] Tracking Values through PHI Nodes.

Kindly Ping.

Nov 27 2017, 6:10 AM
haicheng added a comment to D39556: [ConstantFold] Support vector index when factoring out GEP index into preceding dimensions.

Kindly Ping

Nov 27 2017, 6:10 AM

Nov 26 2017

haicheng added a comment to D40097: [Inliner][NewPM] Inline functions outside of current SCC first.

Using heuristic like this for inline order decision is like tossing a coin. It is very likely that doing this can hurt some cases where inlining of inner edges are important but gets blocked.

Due to current practical limitation in the inliner such as lack of the ability to inline self recursive functions, this patch can help to workaround that limitation a little, so the patch looks fine for now, though we should not depend strongly on this inline behavior in the future.

Nov 26 2017, 8:31 PM

Nov 22 2017

haicheng added a comment to D40097: [Inliner][NewPM] Inline functions outside of current SCC first.

Kindly Ping

Nov 22 2017, 7:12 AM

Nov 20 2017

haicheng added a comment to D33946: [InlineCost] Find identical loads in the callee.

Kindly Ping (#7)

Nov 20 2017, 7:43 AM

Nov 19 2017

haicheng added inline comments to D39556: [ConstantFold] Support vector index when factoring out GEP index into preceding dimensions.
Nov 19 2017, 6:32 PM
haicheng updated the diff for D39556: [ConstantFold] Support vector index when factoring out GEP index into preceding dimensions.

Address most of Matt's comments. Thank you.

Nov 19 2017, 6:24 PM

Nov 17 2017

haicheng added a comment to D4609: Top-Down FunctionAttrs propagation for noalias, dereferenceable and nonnull inference.

It occurs to me that the need for this might be removed by another potential improvement (suggested to me by Chandler at EuroLLVM this year): We can make CGSCC analysis wrapper for our current analysis passes in order to allow these analyses to look back through function arguments into the function's callers. To make this work, we'd:

  1. Make CGSCC analysis passes corresponding to our current analysis passes. For example, AA, ValueTracking, etc. (I realize that ValueTracking is not really an analysis pass right now, and while we might want to change that at some point, I don't think it matters for this description).
  2. These pass accept analysis queries and produce results by looking at the calling functions and calling the function/local analysis on the values at each call site, and then intersecting the results. If there are too many call sites, or unknown call sites, then you need to give up.
  3. Provide these CGSCC analysis handles to the corresponding local analyses so that, as they do a recursive analysis, when they hit arguments, then can call into the CGSCC analyses to continue the analysis into the callers.

    If we did that, do you think we'd still need this transformation?
Nov 17 2017, 9:03 AM
haicheng updated the diff for D38594: [InlineCost] Tracking Values through PHI Nodes.

Address Easwaran's comments. Thank you very much.

Nov 17 2017, 7:21 AM

Nov 16 2017

haicheng added a comment to D39556: [ConstantFold] Support vector index when factoring out GEP index into preceding dimensions.

Kindly Ping (#2)

Nov 16 2017, 6:49 AM