Page MenuHomePhabricator

mssimpso (Matthew Simpson)
User

Projects

User does not belong to any projects.

User Details

User Since
Dec 19 2014, 12:23 PM (207 w, 2 d)

Recent Activity

Oct 1 2018

mssimpso accepted D52741: [AMDGPU] Add an AMDGPU pass to promote bitcast calls.

@mssimpso Are you OK with reviewing the changes to CallPromotionUtils.cpp in this patch? I wasn't sure who the correct code owner was.

Oct 1 2018, 12:56 PM

May 15 2018

mssimpso added a comment to D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Thanks very much for the review Easwaran! As this patch still depends on D39339 to get the function iteration order right in the inliner, would you mind taking at look at that patch if you have a chance, or recommending someone for the review? Thanks again.

May 15 2018, 11:42 AM

May 1 2018

mssimpso added inline comments to D46126: [SLP] Vectorize transposable binary operand bundles.
May 1 2018, 11:12 AM
mssimpso added inline comments to D46126: [SLP] Vectorize transposable binary operand bundles.
May 1 2018, 10:33 AM
mssimpso updated the diff for D46126: [SLP] Vectorize transposable binary operand bundles.

Addressed first round of comments from Alexey and Ayal. Thanks again for the feedback! I'll respond to Ayal's most recent comments in a separate update.

May 1 2018, 10:00 AM
mssimpso committed rL331274: [SLP] Add additional test for transposable binary operations with reuse.
[SLP] Add additional test for transposable binary operations with reuse
May 1 2018, 9:03 AM

Apr 30 2018

mssimpso added a comment to D46126: [SLP] Vectorize transposable binary operand bundles.

This is reminiscent of LV's interleave group optimization, in the sense that a couple of correlated inefficient vector "gathers" are replaced by a couple of efficiently formed vectors followed by transposing shuffles. The correlated gathers may come from the two operands of a binary operation, as in this patch, or more generally from arbitrary leaves of the SLP tree.

Apr 30 2018, 11:08 AM
mssimpso added a comment to D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Ping.

Apr 30 2018, 6:50 AM

Apr 27 2018

mssimpso added a comment to D46126: [SLP] Vectorize transposable binary operand bundles.

Will it work correctly if some of the operations are used several times in the bundles? It would be good to have the tests for this kind of situation.

Apr 27 2018, 7:35 AM

Apr 26 2018

mssimpso created D46126: [SLP] Vectorize transposable binary operand bundles.
Apr 26 2018, 8:44 AM
mssimpso committed rL330945: [SLP] Add tests for transposable binary operations.
[SLP] Add tests for transposable binary operations
Apr 26 2018, 7:53 AM
mssimpso committed rL330941: [TTI, AArch64] Add transpose shuffle kind.
[TTI, AArch64] Add transpose shuffle kind
Apr 26 2018, 6:52 AM
mssimpso closed D45982: [TTI, AArch64] Add transpose shuffle kind.
Apr 26 2018, 6:51 AM

Apr 25 2018

mssimpso accepted D46026: [ICP] Do not attempt type matching for variable length arguments..

LGTM.

Apr 25 2018, 9:23 AM

Apr 24 2018

mssimpso added a comment to D45982: [TTI, AArch64] Add transpose shuffle kind.

LGTM. Probably wait a day before committing in case Renato/others have a comment/suggestion.

Apr 24 2018, 1:00 PM
mssimpso added a comment to D46026: [ICP] Do not attempt type matching for variable length arguments..

Thanks for catching this bug! Yep, it was introduced with the refactoring done in D40658. I just have one minor comment.

Apr 24 2018, 1:00 PM
mssimpso updated the diff for D45982: [TTI, AArch64] Add transpose shuffle kind.

Addressed Javed's comments. Thanks!

Apr 24 2018, 7:03 AM
mssimpso added inline comments to D45982: [TTI, AArch64] Add transpose shuffle kind.
Apr 24 2018, 6:42 AM

Apr 23 2018

mssimpso created D45982: [TTI, AArch64] Add transpose shuffle kind.
Apr 23 2018, 1:05 PM
mssimpso committed rL330625: [AArch64] Add cost model test case for transpose.
[AArch64] Add cost model test case for transpose
Apr 23 2018, 11:25 AM

Apr 17 2018

mssimpso added inline comments to D39869: [Inliner] Inline through indirect call sites having !callees metadata.
Apr 17 2018, 1:03 PM
mssimpso updated the diff for D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Addressed Easwaran's comments. Thanks again!

Apr 17 2018, 1:03 PM

Apr 6 2018

mssimpso updated the summary of D39869: [Inliner] Inline through indirect call sites having !callees metadata.
Apr 6 2018, 12:59 PM
mssimpso updated the diff for D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Addressed Easwaran's comments.

Apr 6 2018, 12:57 PM
mssimpso updated the diff for D39339: [CallGraph] Refine call graph for indirect calls with !callees metadata.

Updated to work with the latest revision of D39869.

Apr 6 2018, 12:57 PM

Apr 2 2018

mssimpso added a comment to D44868: [SLP] Distinguish "demanded and shrinkable" from "demanded and not shrinkable" values when determining the minimum bitwidth.

Hi Haicheng,

Apr 2 2018, 7:33 AM

Mar 23 2018

mssimpso committed rL328316: [SLP] Stop counting cost of gather sequences with multiple uses.
[SLP] Stop counting cost of gather sequences with multiple uses
Mar 23 2018, 7:21 AM
mssimpso closed D44742: [SLP] Stop counting cost of gather sequences with multiple uses.
Mar 23 2018, 7:21 AM
mssimpso committed rL328310: [test] Allow for optional No-Op Barrier Pass in O0 pipeline.
[test] Allow for optional No-Op Barrier Pass in O0 pipeline
Mar 23 2018, 5:51 AM
mssimpso added a comment to rL328160: [test] Add tests for opt passes pipelines for O0, O2, O3, and Os..

Sounds good! I'll update the test. Thanks!

Mar 23 2018, 5:21 AM

Mar 22 2018

mssimpso accepted D43762: [IPSCCP] Use constant range information for comparisons of parameters..

LGTM.

Mar 22 2018, 1:33 PM
mssimpso added a comment to rL328160: [test] Add tests for opt passes pipelines for O0, O2, O3, and Os..

Hi Michael,

Mar 22 2018, 1:27 PM
mssimpso added inline comments to D43762: [IPSCCP] Use constant range information for comparisons of parameters..
Mar 22 2018, 8:27 AM
mssimpso added inline comments to D43762: [IPSCCP] Use constant range information for comparisons of parameters..
Mar 22 2018, 8:19 AM

Mar 21 2018

mssimpso updated the diff for D44742: [SLP] Stop counting cost of gather sequences with multiple uses.

Addressed Alexey's comments. Thanks!

Mar 21 2018, 12:19 PM
mssimpso committed rL328133: [SLP] Add test case for a gather sequence with multiple uses.
[SLP] Add test case for a gather sequence with multiple uses
Mar 21 2018, 12:16 PM
mssimpso added a comment to D44742: [SLP] Stop counting cost of gather sequences with multiple uses.

Here is the SLP tree of the added test case. The cost of the gather (%a, %b, %c, %d) is added twice, once per use, before this patch.

Mar 21 2018, 9:34 AM
mssimpso created D44742: [SLP] Stop counting cost of gather sequences with multiple uses.
Mar 21 2018, 9:28 AM

Mar 20 2018

mssimpso added a comment to D39869: [Inliner] Inline through indirect call sites having !callees metadata.

I added Easwaran to get a closer look at the change.

Mar 20 2018, 7:47 AM

Mar 19 2018

mssimpso added a comment to D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Ping.

Mar 19 2018, 11:43 AM

Mar 16 2018

mssimpso committed rL327702: [AArch64] Implement getArithmeticReductionCost.
[AArch64] Implement getArithmeticReductionCost
Mar 16 2018, 4:37 AM
mssimpso closed D44490: [AArch64] Implement getArithmeticReductionCost.
Mar 16 2018, 4:37 AM
mssimpso committed rL327698: [TTI, AArch64] Allow the cost model analysis to test vector reduce intrinsics.
[TTI, AArch64] Allow the cost model analysis to test vector reduce intrinsics
Mar 16 2018, 3:03 AM
mssimpso closed D44489: [TTI, AArch64] Allow the cost model analysis to test vector reduce intrinsics.
Mar 16 2018, 3:03 AM

Mar 15 2018

mssimpso committed rL327638: [ConstantFolding, InstSimplify] Handle more vector GEPs.
[ConstantFolding, InstSimplify] Handle more vector GEPs
Mar 15 2018, 9:03 AM
mssimpso closed D44219: [ConstantFolding, InstSimplify] Handle more vector GEPs.
Mar 15 2018, 9:03 AM
mssimpso updated the diff for D44489: [TTI, AArch64] Allow the cost model analysis to test vector reduce intrinsics.

Addressed Renato's comments.

Mar 15 2018, 8:01 AM
mssimpso added a comment to D44490: [AArch64] Implement getArithmeticReductionCost.

I'm happy to see this! LGTM with just one small comment, no need to re-review. Thanks!

Mar 15 2018, 6:59 AM
mssimpso added a comment to D44489: [TTI, AArch64] Allow the cost model analysis to test vector reduce intrinsics.

Hi Mathew,

Why can't this be an extension of getIntrinsicInstrCost itself? It already has that logic (and much more)...

Also, my comments are related to further extensions of this function (if necessary), as well as for extending getIntrinsicInstrCost.

I fear we'll end up with a big list of lambdas before the actual switches, all to wrap common variables and safety asserts.

cheers,
--renato

Mar 15 2018, 6:57 AM

Mar 14 2018

mssimpso added a comment to D44490: [AArch64] Implement getArithmeticReductionCost.

Do you intend to consider AArch64TTIImpl::getMinMaxRdxCost() too?

Mar 14 2018, 1:09 PM
mssimpso added a parent revision for D44490: [AArch64] Implement getArithmeticReductionCost: D44489: [TTI, AArch64] Allow the cost model analysis to test vector reduce intrinsics.
Mar 14 2018, 12:40 PM
mssimpso added a child revision for D44489: [TTI, AArch64] Allow the cost model analysis to test vector reduce intrinsics: D44490: [AArch64] Implement getArithmeticReductionCost.
Mar 14 2018, 12:40 PM
mssimpso created D44490: [AArch64] Implement getArithmeticReductionCost.
Mar 14 2018, 12:40 PM
mssimpso created D44489: [TTI, AArch64] Allow the cost model analysis to test vector reduce intrinsics.
Mar 14 2018, 12:40 PM

Mar 9 2018

mssimpso added a comment to D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Hi David,

Mar 9 2018, 1:22 PM

Mar 7 2018

mssimpso accepted D43974: [AArch64] Adjust the cost of integer vector division.

LGTM, thanks!

Mar 7 2018, 2:16 PM
mssimpso added inline comments to D43974: [AArch64] Adjust the cost of integer vector division.
Mar 7 2018, 1:59 PM
mssimpso added a comment to D43974: [AArch64] Adjust the cost of integer vector division.

The test case has scalar types and it seems more interesting to see the cost rising proportionally with the vector factor.

Mar 7 2018, 1:21 PM
mssimpso added a comment to D43974: [AArch64] Adjust the cost of integer vector division.

For the test case, why not just run "-cost-model -analyze" like we do for the other tests instead of running the vectorizer? Am I missing something?

Mar 7 2018, 1:03 PM
mssimpso created D44219: [ConstantFolding, InstSimplify] Handle more vector GEPs.
Mar 7 2018, 11:26 AM
mssimpso added a comment to D43974: [AArch64] Adjust the cost of integer vector division.

Makes sense to me. I tested this patch on Falkor and didn't notice any significant performance differences on the benchmarks I ran. Can we add a test case, though? Maybe in test/Analysis/CostModel?

Mar 7 2018, 9:15 AM

Mar 5 2018

mssimpso added a comment to D41939: [LV] Fix incorrect detection of type-promoted Phis.

Sorry for not responding sooner - I was away from work for a few weeks. Yes, this looks like the same issue that was fixed over in rL324195. Thanks for adding the new tests, and sorry for the duplicated effort! Let me know if you run into any problems with the new code.

Mar 5 2018, 1:21 PM

Jan 24 2018

mssimpso added a comment to D42309: [LV] Use Demanded Bits and ValueTracking for reduction type-shrinking.

Hi Matthew,

thanks for taking care of this! I like the general idea of the fix but I have a concern regarding the TODO in line 408:

// TODO: We should not rely on InstCombine to rewrite the reduction in the
//       smaller type. We should just generate a correctly typed expression
//       to begin with.

The cost model is relying on an optimization that will hopefully be applied by InstCombine. I wonder if it would be too complicated to implement the actual type shrinking in LV code gen as part of the fix.
That would better align cost modeling with LV code generation, which is one the major concerns of the current infrastructure.

In the future VPlan infrastructure, we will definitely need to address this optimization as a VPlan-to-VPlan transformation. Thanks for bringing up this issue.
Diego

Jan 24 2018, 4:06 PM

Jan 19 2018

mssimpso updated subscribers of D42260: [JumpThreading] Don't select an edge that we know we can't thread.
Jan 19 2018, 1:50 PM
mssimpso updated the summary of D42309: [LV] Use Demanded Bits and ValueTracking for reduction type-shrinking.
Jan 19 2018, 11:21 AM
mssimpso created D42309: [LV] Use Demanded Bits and ValueTracking for reduction type-shrinking.
Jan 19 2018, 11:21 AM

Jan 18 2018

mssimpso accepted D41948: [SLP] Fix vectorization for tree with trunc to minimum required bit width..

LGTM.

Jan 18 2018, 1:43 PM
mssimpso added inline comments to D41948: [SLP] Fix vectorization for tree with trunc to minimum required bit width..
Jan 18 2018, 1:36 PM

Jan 15 2018

mssimpso updated the diff for D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Addressed David's comments.

Jan 15 2018, 3:11 PM

Jan 12 2018

mssimpso added a comment to D42007: [SimplifyCFG] Try to change store operation type when sinking.

I might consider holding my nose, if this restores something that was there.
I think the other two passes we have for doing sinking aren't currently enabled (GVNSink and Sink.cpp), although unless somebody puts effort in them this will always be a chicken-egg problem.
I'm not sure I'll have the time to review this patch carefully, I don't want to put you on the hook, but if you can consider an alternative, that would be great.
If you look at the original review you'll notice that I was fundamentally opposed to the change, see e.g. https://reviews.llvm.org/D38566#926530
(FWIW, it doesn't matter where we move sinking/hoisting there will be always some case that we can't get properly. We, of course should prioritize for the common case, at least IMHO).

Jan 12 2018, 3:19 PM
mssimpso abandoned D42007: [SimplifyCFG] Try to change store operation type when sinking.
Jan 12 2018, 2:51 PM
mssimpso added a comment to D42007: [SimplifyCFG] Try to change store operation type when sinking.

Thanks for the quick feedback Danny/Davide. I definitely appreciate the point that SimplifyCFG may not be the best place for this kind of transformation. Davide, I assume the dedicated pass you're referring to is GVNSink? I don't think that pass is enabled yet (I haven't been closely following the progress, so I'm not sure what's holding it up at this point), but it's possible GVNSink would indeed catch the cases this patch does. I haven't tested that yet.

Jan 12 2018, 2:49 PM
mssimpso added a comment to D41948: [SLP] Fix vectorization for tree with trunc to minimum required bit width..

Thanks for cleaning this up.

Jan 12 2018, 2:14 PM
mssimpso created D42007: [SimplifyCFG] Try to change store operation type when sinking.
Jan 12 2018, 12:24 PM

Jan 11 2018

mssimpso added inline comments to D41913: [LV] Don't call recordVectorLoopValueForInductionCast for newly-created IV from a trunc..
Jan 11 2018, 1:56 PM
mssimpso accepted D41766: [MachineCombiner] Add check for optimal pattern order..

TBH I was hoping for a more complete approach to testing this, but I thought I share this relatively straight forward check.

Jan 11 2018, 12:56 PM
mssimpso added a comment to D41913: [LV] Don't call recordVectorLoopValueForInductionCast for newly-created IV from a trunc..

Hi Dimitry,

Jan 11 2018, 12:42 PM

Jan 8 2018

mssimpso added a comment to D41766: [MachineCombiner] Add check for optimal pattern order..

Hi Florian,

Jan 8 2018, 11:58 AM
mssimpso added a comment to D39869: [Inliner] Inline through indirect call sites having !callees metadata.

I think 'tryToPromote' method should be moved to the indirect call promotion pass so that the callback to inline cost/benefit is exposed there (a more general cost/benefit model needs to be developed for indirect call promotion). Initially, I think we can limit the use of the getInlineCost callback to cases where profile data is not available, this will achieve what this patch is doing without affecting existing promotion heuristics.

Jan 8 2018, 11:26 AM

Jan 4 2018

mssimpso added a comment to D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Ping.

Jan 4 2018, 4:38 PM
mssimpso added a comment to D39339: [CallGraph] Refine call graph for indirect calls with !callees metadata.

Ping.

Jan 4 2018, 4:37 PM

Dec 27 2017

mssimpso committed rL321491: [AArch64] Change order of candidate FMLS patterns.
[AArch64] Change order of candidate FMLS patterns
Dec 27 2017, 7:26 AM
mssimpso closed D41587: [AArch64] Change order of candidate FMLS patterns.
Dec 27 2017, 7:25 AM

Dec 26 2017

mssimpso added a comment to D41587: [AArch64] Change order of candidate FMLS patterns.

Thanks for spotting this!
The reordering looks good to me, give the current behavior of the MachineCombiner it makes sense to move up the more profitable patterns.

However, the order in which we add the patterns to the list of candidates determines the transformation that takes place, since only the first pattern that matches will be used.

This behavior is not ideal though, especially as some order of patterns might be good for one micro architecture, whereas a different order is better for a different micro architecture.

I'll try to look into this. Maybe it's worth to change the MachineCombiner to try all available patterns.

Dec 26 2017, 12:45 PM
mssimpso created D41587: [AArch64] Change order of candidate FMLS patterns.
Dec 26 2017, 12:15 PM

Dec 20 2017

mssimpso updated the diff for D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Rebased.

Dec 20 2017, 12:01 PM
mssimpso committed rL321210: [ICP] Expose unconditional call promotion interface.
[ICP] Expose unconditional call promotion interface
Dec 20 2017, 11:27 AM
mssimpso closed D40751: [ICP] Expose unconditional call promotion interface.
Dec 20 2017, 11:27 AM

Dec 19 2017

mssimpso added a comment to D40751: [ICP] Expose unconditional call promotion interface.

Thanks David! I'll make those changes before committing.

Dec 19 2017, 12:08 PM

Dec 14 2017

mssimpso updated the diff for D40751: [ICP] Expose unconditional call promotion interface.

Addressed David's comments. Thanks again!

Dec 14 2017, 2:48 PM
mssimpso added a comment to D40751: [ICP] Expose unconditional call promotion interface.

Thanks again for the comments, David. I'll update the patch shortly.

Dec 14 2017, 11:50 AM

Dec 13 2017

mssimpso added a comment to D39339: [CallGraph] Refine call graph for indirect calls with !callees metadata.

Ping.

Dec 13 2017, 2:44 PM

Dec 12 2017

mssimpso added inline comments to D40751: [ICP] Expose unconditional call promotion interface.
Dec 12 2017, 10:09 AM
mssimpso updated the diff for D39869: [Inliner] Inline through indirect call sites having !callees metadata.

Moved demoteCall, previously in D40751, to this patch.

Dec 12 2017, 10:08 AM
mssimpso updated the diff for D40751: [ICP] Expose unconditional call promotion interface.

Addressed David's comments. Thanks for the feedback!

Dec 12 2017, 10:08 AM

Dec 11 2017

mssimpso added a comment to D40751: [ICP] Expose unconditional call promotion interface.

Ping.

Dec 11 2017, 3:00 PM

Dec 6 2017

mssimpso updated the diff for D40751: [ICP] Expose unconditional call promotion interface.

Rebased. Thanks!

Dec 6 2017, 1:45 PM
mssimpso committed rL319963: [PGO] Make indirect call promotion a utility.
[PGO] Make indirect call promotion a utility
Dec 6 2017, 1:23 PM
mssimpso closed D40658: [PGO] Make indirect call promotion a utility by committing rL319963: [PGO] Make indirect call promotion a utility.
Dec 6 2017, 1:23 PM

Dec 1 2017

mssimpso edited parent revisions for D39869: [Inliner] Inline through indirect call sites having !callees metadata, added: 1; removed: 1.
Dec 1 2017, 1:26 PM