Page MenuHomePhabricator

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

mmasten (Matt)
User

Projects

User does not belong to any projects.

User Details

User Since
Apr 6 2016, 10:50 AM (400 w, 2 d)

Recent Activity

Feb 15 2023

mmasten accepted D141650: [VectorUtils] Enhance VFABI demangling API.

LGTM. Are there any other outstanding concerns from anyone? From what I can tell from the latest comments everyone is ok with this change.

Feb 15 2023, 1:21 PM · Restricted Project, Restricted Project

Apr 12 2019

mmasten added inline comments to D40577: Clang support for simd functions.
Apr 12 2019, 11:18 AM
mmasten updated the diff for D40577: Clang support for simd functions.

Rebased and updated test.

Apr 12 2019, 10:56 AM

Jun 7 2018

mmasten added a comment to D47610: [TargetLibraryInfo] add mappings from LLVM sin/cos intrinsics to SVML calls.

This change looks good to me. Thanks for the patch.

Jun 7 2018, 10:54 AM

Apr 26 2018

Herald added a reviewer for D22792: VecClone Pass: javed.absar.
Apr 26 2018, 11:04 AM

Mar 15 2018

mmasten added a comment to D22792: VecClone Pass.

Just a gentle reminder to have a look at the latest VecClone algorithm. Thanks, Matt.

Mar 15 2018, 2:04 PM

Jan 26 2018

mmasten added a comment to D22792: VecClone Pass.

The latest update includes some pretty extensive rework of the VecClone algorithm that Hal suggested. I also added support for VecClone in the new pass manager and since it is my first time doing this, I would welcome any specific comments on whether or not this was done correctly. Please note that I'm still working on fixing existing tests and will be adding new ones, but I wanted to make sure the overall algorithm is headed in the right direction. Thanks all.

Jan 26 2018, 4:34 PM
mmasten updated the diff for D22792: VecClone Pass.

Extensive update to the VecClone algorithm based on Hal's feedback. VecClone pass is now supported through the new pass manager. Other minor code changes made.

Jan 26 2018, 4:29 PM
mmasten added inline comments to D22792: VecClone Pass.
Jan 26 2018, 4:09 PM

Jan 3 2018

mmasten added a comment to D22792: VecClone Pass.

Ok, after doing some experimentation I believe I understand where you're heading with this. Once I have done some more refactoring I'll post a new version of VecClone for review to make sure we're on the same page.

Jan 3 2018, 4:40 PM

Dec 21 2017

mmasten added a comment to D22792: VecClone Pass.

Thanks for the comments, Hal. Just to clarify your point #2, I think what you're saying is that we should start from a common parameter representation; i.e., parameters should be loaded/stored through memory. Please correct me if I'm wrong. I certainly think this would be a great way to reduce the complexity of the algorithm. The remainder of items in your list should already be covered, but some tweaking may be involved.

Dec 21 2017, 5:08 PM

Nov 28 2017

mmasten added a comment to D40577: Clang support for simd functions.

This patch is related to revisions D22792 and D40575

Nov 28 2017, 1:38 PM
mmasten created D40577: Clang support for simd functions.
Nov 28 2017, 1:37 PM
mmasten added inline comments to D22792: VecClone Pass.
Nov 28 2017, 1:17 PM
mmasten updated the diff for D22792: VecClone Pass.

Moved calcCharacteristicType() function to VectorUtils so that VecClone and LV can share.
Removed vector-variant function attributes in LV instead of VecClone because LV needs to see them.

Nov 28 2017, 1:14 PM
mmasten created D40575: LoopVectorize support for simd functions.
Nov 28 2017, 1:11 PM

Nov 27 2017

mmasten added inline comments to D22792: VecClone Pass.
Nov 27 2017, 4:38 PM

Nov 6 2017

mmasten added inline comments to D22792: VecClone Pass.
Nov 6 2017, 11:49 AM

Oct 31 2017

mmasten updated the diff for D22792: VecClone Pass.
Oct 31 2017, 12:29 PM
mmasten added inline comments to D22792: VecClone Pass.
Oct 31 2017, 12:26 PM

Oct 23 2017

mmasten added a comment to D22792: VecClone Pass.

Hi Francesco,

Oct 23 2017, 4:46 PM

Feb 7 2017

mmasten added a comment to D22792: VecClone Pass.

Thanks for the feedback, Hal. I made the changes you suggested.

Feb 7 2017, 5:02 PM
mmasten updated the diff for D22792: VecClone Pass.

New changes are:

  1. Update function attributes to "vector-variants"="<variant list>" format.
  2. Move target-specific code in the VectorVariant class to TTI.
Feb 7 2017, 4:58 PM

Oct 4 2016

mmasten updated the diff for D22792: VecClone Pass.
Oct 4 2016, 11:53 AM

Sep 1 2016

mmasten added inline comments to D22792: VecClone Pass.
Sep 1 2016, 10:44 AM

Aug 31 2016

mmasten added a comment to D22792: VecClone Pass.

Thanks for the comments, Mehdi. I had some other things come up, but I'm making some corrections now.

Aug 31 2016, 3:11 PM

Jul 29 2016

mmasten committed rL277167: Initial vectorization support for svml calls (short vector math library)..
Initial vectorization support for svml calls (short vector math library).
Jul 29 2016, 9:52 AM
mmasten committed rL277166: Initial support for vectorization using svml (short vector math library)..
Initial support for vectorization using svml (short vector math library).
Jul 29 2016, 9:50 AM
mmasten closed D19544: Pass for translating math intrinsics to math library calls. by committing rL277166: Initial support for vectorization using svml (short vector math library)..
Jul 29 2016, 9:50 AM

Jul 27 2016

mmasten committed rL276912: test commit.
test commit
Jul 27 2016, 1:31 PM
mmasten committed rL276911: test commit.
test commit
Jul 27 2016, 1:30 PM

Jul 25 2016

mmasten retitled D22792: VecClone Pass from to VecClone Pass.
Jul 25 2016, 5:37 PM
mmasten added a comment to D19544: Pass for translating math intrinsics to math library calls..

I was just recently given commit privileges, so I can do it. Thanks Hal.

Jul 25 2016, 2:03 PM

Jul 22 2016

mmasten added a comment to D19544: Pass for translating math intrinsics to math library calls..

Thanks Michael. The tests have been updated.

Jul 22 2016, 2:11 PM
mmasten updated the diff for D19544: Pass for translating math intrinsics to math library calls..
Jul 22 2016, 2:10 PM

Jul 21 2016

mmasten added a comment to D19544: Pass for translating math intrinsics to math library calls..

I think this is just saying that some of the weird types are not supported on all targets. For now, is it ok to proceed with checking this code in?

Jul 21 2016, 5:18 PM

Jul 19 2016

mmasten updated the diff for D19544: Pass for translating math intrinsics to math library calls..
Jul 19 2016, 3:01 PM
mmasten added a comment to D19544: Pass for translating math intrinsics to math library calls..

In the process of writing test cases, I noticed that a loop with a call to llvm.log.f32 was not getting vectorized due to cost modeling. When forcing vectorization on the loop and throwing -fveclib=SVML, the loop was vectorized with a widened intrinsic instead of the svml call. Is this correct? I would have expected to get the svml call. In light of this, wouldn't it be better to represent the math calls with vector intrinsics and let CodeGenPrepare or the backends decide how to lower them?

Jul 19 2016, 10:53 AM

Jul 15 2016

mmasten added a comment to D19544: Pass for translating math intrinsics to math library calls..

Thanks for reviewing. One concern I have going forward is the number of entries that will appear in the switch statement inside addVectorizableFunctionsFromVecLib(). I assume that the right thing to do is to replace this with something that is TableGen'd? Also, I just wanted to point out that some of these entries will result in svml calls that are not legal. E.g., __svml_sinf32 does not actually exist in the library, but can be legalized in case one explicitly sets a vector length of 32. Although these types of cases are probably not common, I wanted to bring this to your attention since the legalization piece of this work will be reviewed and committed separately. If needed, I can remove those entries until the legalization is in place.

Jul 15 2016, 10:47 AM

Jul 14 2016

mmasten added a comment to D19544: Pass for translating math intrinsics to math library calls..

Hello all,

Jul 14 2016, 10:56 AM

Jun 17 2016

mmasten updated the diff for D19544: Pass for translating math intrinsics to math library calls..
Jun 17 2016, 10:34 AM
mmasten updated the diff for D19544: Pass for translating math intrinsics to math library calls..
Jun 17 2016, 10:33 AM

Apr 28 2016

mmasten added a comment to D19544: Pass for translating math intrinsics to math library calls..

Thanks for the feedback, Hal. We need the clang support because we actually have several variants of each svml function, each of them having varying levels of precision. To be able to pick the right variant, not only do we need to know the variant name and vector length, we also need the additional precision information specified by the user via -imf flags from the command line. If we go the route of implementing the translation using the addVectorizableFunctionsFromVecLib(), it seems some additional information about precision requirements would be needed in the VecDesc struct. One thing I'm concerned about with this approach is that if the math calls are translated immediately to library calls, then any subsequent optimizations are probably in a less advantageous position of being able to optimize further. Thus, one of the design goals of this project was to keep the vectorized intrinsics as late as possible before translation. What are your thoughts on this?

Apr 28 2016, 5:31 PM

Apr 26 2016

mmasten retitled D19544: Pass for translating math intrinsics to math library calls. from to Pass for translating math intrinsics to math library calls..
Apr 26 2016, 10:56 AM

Apr 6 2016

mmasten added a comment to D18701: [ARM] Adding IEEE-754 SIMD detection to loop vectorizer.

I currently have an RFC for translating vector math intrinsics to svml calls. This proposal includes the user specifying the desired precision requirements via several flags (supported by the Intel compiler currently). The plan is to attach this information in the form of function attributes at the calls sites of the math intrinsics. In turn, these attributes drive the selection of the appropriate svml function variant. Would this be helpful in this particular case? I've included a description of the flags below.

Apr 6 2016, 11:07 AM