meheff (Mark Heffernan)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 2 2014, 9:55 AM (232 w, 3 d)

Recent Activity

Dec 18 2015

meheff added a comment to D15618: [NaryReassociate] allow candidate to have a different type.

LGTM

Dec 18 2015, 12:05 PM

Oct 16 2015

meheff added a comment to D13402: Refactor loop unrolling pass and add optimization remarks.

ping?

Oct 16 2015, 11:08 AM

Oct 2 2015

meheff retitled D13402: Refactor loop unrolling pass and add optimization remarks from to Refactor loop unrolling pass and add optimization remarks.
Oct 2 2015, 5:20 PM

Sep 9 2015

meheff added a comment to D12721: [ScalarEvolution] Fix PR24757..

LGTM. Good catch!

Sep 9 2015, 11:26 PM

Aug 26 2015

meheff added a comment to D12377: [NVPTX] Let NVPTX backend detect integer min and max patterns..

I agree with Jingyue's cleanup suggestion. Otherwise LGTM.

Aug 26 2015, 1:42 PM

Aug 11 2015

meheff committed rL244684: Use 32-bit divides instead of 64-bit divides where possible..
Use 32-bit divides instead of 64-bit divides where possible.
Aug 11 2015, 3:17 PM
meheff updated the diff for D11926: [NVPTX] Use 32-bit divides instead of 64-bit divides where possible.

Test added. Unfortunately the stand alone Eigen3 benchmarks don't show much improvement with this patch because, I believe, they use 32-bit indices throughout. Where we see the huge speedup is in the larger-scale benchmarks using Eigen with 64-bit indices.

Aug 11 2015, 12:17 PM

Aug 10 2015

meheff retitled D11926: [NVPTX] Use 32-bit divides instead of 64-bit divides where possible from to [NVPTX] Use 32-bit divides instead of 64-bit divides where possible.
Aug 10 2015, 6:18 PM
meheff closed D11739: Add new llvm.loop.unroll.enable metadata.
Aug 10 2015, 10:32 AM
meheff closed D11738: Add new llvm.loop.unroll.enable metadata which is now generated by "#pragma unroll" directive .

Thanks!

Aug 10 2015, 10:31 AM
meheff committed rL244467: Add new llvm.loop.unroll.enable metadata for use with "#pragma unroll"..
Add new llvm.loop.unroll.enable metadata for use with "#pragma unroll".
Aug 10 2015, 10:30 AM
meheff committed rL244466: Add new llvm.loop.unroll.enable metadata..
Add new llvm.loop.unroll.enable metadata.
Aug 10 2015, 10:28 AM

Aug 7 2015

meheff added a comment to D11738: Add new llvm.loop.unroll.enable metadata which is now generated by "#pragma unroll" directive .

Ping, Hal? Thanks!

Aug 7 2015, 5:02 PM

Aug 3 2015

meheff retitled D11739: Add new llvm.loop.unroll.enable metadata from to Add new llvm.loop.unroll.enable metadata.
Aug 3 2015, 3:44 PM
meheff retitled D11738: Add new llvm.loop.unroll.enable metadata which is now generated by "#pragma unroll" directive from to Add new llvm.loop.unroll.enable metadata which is now generated by "#pragma unroll" directive .
Aug 3 2015, 3:38 PM

Jul 13 2015

meheff committed rL242049: Enable partial and runtime loop unrolling for NVPTX..
Enable partial and runtime loop unrolling for NVPTX.
Jul 13 2015, 11:33 AM
meheff committed rL242048: Update documentation for unroll pragmas on loops with runtime trip counts..
Update documentation for unroll pragmas on loops with runtime trip counts.
Jul 13 2015, 11:31 AM
meheff committed rL242047: Enable runtime unrolling with unroll pragma metadata.
Enable runtime unrolling with unroll pragma metadata
Jul 13 2015, 11:26 AM

Jul 9 2015

meheff added a comment to D10854: Enable runtime unrolling with unroll pragma metadata.

From your earlier comments it wasn't clear whether you were suggesting that
the front end should add unroll.full and unroll.disable.runtime metadata
with "#pragma unroll" OR if unroll.full metadata should imply no runtime
unrolling in the optimizer. I opted for the latter. It seemed more natural
for the front-end just to do a straight-forward map of the directives to
metadata, and then the optimizer has the logic to properly deal with funny
cases like pragma unroll on a runtime trip count loop.

Jul 9 2015, 8:29 PM
meheff updated the diff for D10857: Update documentation for unroll pragmas on loops with runtime trip counts.

Removing the llvm-specific flag sounds good to me. Updated in diff.

Jul 9 2015, 8:23 PM
meheff updated the diff for D10854: Enable runtime unrolling with unroll pragma metadata.

Update unrolling behavior for unroll(full) directive as discussed in http://reviews.llvm.org/D10857.

Jul 9 2015, 8:16 PM
meheff updated the diff for D10857: Update documentation for unroll pragmas on loops with runtime trip counts.
Jul 9 2015, 8:05 PM

Jul 7 2015

meheff added inline comments to D10857: Update documentation for unroll pragmas on loops with runtime trip counts.
Jul 7 2015, 1:40 PM

Jul 1 2015

meheff added inline comments to D10857: Update documentation for unroll pragmas on loops with runtime trip counts.
Jul 1 2015, 9:26 AM

Jun 30 2015

meheff added a comment to D10822: [NaryReassociate] enhances nsw by leveraging @llvm.assume.

LGTM. Just one nit comment/question.

Jun 30 2015, 5:14 PM
meheff retitled D10857: Update documentation for unroll pragmas on loops with runtime trip counts from to Update documentation for unroll pragmas on loops with runtime trip counts.
Jun 30 2015, 4:55 PM
meheff retitled D10855: Enable partial and runtime loop unrolling for NVPTX from to Enable partial and runtime loop unrolling for NVPTX.
Jun 30 2015, 4:45 PM
meheff added a reviewer for D10854: Enable runtime unrolling with unroll pragma metadata: broune.
Jun 30 2015, 4:41 PM
meheff retitled D10854: Enable runtime unrolling with unroll pragma metadata from to Enable runtime unrolling with unroll pragma metadata.
Jun 30 2015, 4:35 PM
meheff committed rL241126: Fix several typos in LangRef.rst related to loop unrolling metadata..
Fix several typos in LangRef.rst related to loop unrolling metadata.
Jun 30 2015, 3:49 PM

Jun 23 2015

meheff committed rL240438: This change fixes three bugs in loop unswitching. This change causes an 81%….
This change fixes three bugs in loop unswitching. This change causes an 81%…
Jun 23 2015, 11:31 AM

Jun 16 2015

meheff added a comment to D10376: Fix three bugs in loop unswitching related to trivial unswitching and the threshold parameter.

LGTM. Thanks!

Jun 16 2015, 11:28 AM

Jun 12 2015

meheff added a comment to D10376: Fix three bugs in loop unswitching related to trivial unswitching and the threshold parameter.

Thanks for fixing this. This certainly seems saner than what is there now. Some clarifying comments about MaxSize might be good. Superficially it looks like some global budget because it is a pass level value and gets decremented per loop, but in reality all the budget gets returned when the pass is done with a loop and all of it's clones.

Jun 12 2015, 11:42 AM

May 28 2015

meheff added a comment to D9947: [NaryReassociate] Run EarlyCSE after NaryReassociate.

Sorry for the delay. LGTM.

May 28 2015, 10:01 AM
meheff added a comment to D10074: [NVPTXFavorNonGenericAddrSpaces] recursively trace into GEP and BitCast.

LGTM

May 28 2015, 9:51 AM

May 15 2015

meheff added a comment to D9788: [SLSR] handle (B | i) * S.

LGTM

May 15 2015, 9:37 AM

May 14 2015

meheff added a comment to D9734: [ValueTracking] refactor: extract method haveNoCommonBitsSet.

LGTM

May 14 2015, 10:01 AM

May 7 2015

meheff added a comment to D9360: Add a speculative execution pass.

LGTM

May 7 2015, 10:53 AM

May 5 2015

meheff added inline comments to D9360: Add a speculative execution pass.
May 5 2015, 2:07 PM

Apr 23 2015

meheff added a comment to D9230: [NVPTX] run SeparateConstOffsetFromGEP before SLSR.

LGTM.

Apr 23 2015, 12:50 PM

Apr 21 2015

meheff added a comment to D9172: [NVPTX] do not run DCE after SLSR and SeparateConstOffsetFromGEP.

LGTM.

Apr 21 2015, 1:45 PM
meheff added a comment to D9101: [SLSR] garbage-collect unused instructions.

LGTM

Apr 21 2015, 12:45 PM
meheff added a comment to D9096: [SeparateConstOffsetFromGEP] garbage-collect intermediate instructions.

LGTM with the addition of the new flag to the unit tests.

Apr 21 2015, 12:40 PM

Apr 20 2015

meheff retitled D9136: Reassociate GEP operands for loop invariant code motion from to Reassociate GEP operands for loop invariant code motion.
Apr 20 2015, 6:26 PM
meheff added inline comments to D9096: [SeparateConstOffsetFromGEP] garbage-collect intermediate instructions.
Apr 20 2015, 11:18 AM

Apr 16 2015

meheff added a comment to D9058: [NaryReassociate] run NaryReassociate iteratively.

LGTM.

Apr 16 2015, 3:15 PM
meheff added a comment to D9055: [NaryReassociate] speeds up candidate searching.

LGTM.

Apr 16 2015, 12:44 PM
meheff closed D4571: Remove unroll pragma metadata after it is used.
Apr 16 2015, 10:25 AM
meheff closed D4662: Fix bug causing loop unrolling to be disabled in some cases for loops with '#pragma clang loop unroll_count(N)".
Apr 16 2015, 10:25 AM

Apr 15 2015

meheff added a comment to D8911: Fix a performance problem in gep(gep ...) merging .

There was a discussion on the mailing list about the exact issue this patch is addressing. We (Google team working on NVPTX backend) ran into this same issue as did someone (Francois Pichet) working with the ppc backend. Here's the link to the discussion:

Apr 15 2015, 11:34 AM

Apr 14 2015

meheff added a comment to D8983: [SLSR] handle candidate form (B + i * S).

LGTM.

Apr 14 2015, 10:35 AM

Apr 6 2015

meheff added a comment to D8837: [SLSR] consider &B[S << i] as &B[(1 << i) * S].

LGTM. Thanks!

Apr 6 2015, 9:57 AM

Apr 2 2015

meheff added a comment to D8809: [SLSR] handles off bounds GEPs.

LGTM. Thanks!

Apr 2 2015, 1:57 PM

Mar 11 2015

meheff added a comment to D7459: [SLSR] handle candidate form &B[i * S].

Thanks, Jingyue. LGTM

Mar 11 2015, 2:58 PM
meheff added inline comments to D7459: [SLSR] handle candidate form &B[i * S].
Mar 11 2015, 11:26 AM

Feb 23 2015

meheff committed rL230294: Add release notes about the unroll pragmas..
Add release notes about the unroll pragmas.
Feb 23 2015, 5:16 PM

Feb 2 2015

meheff added a comment to D7310: Add straight-line strength reduction to LLVM.

LGTM

Feb 2 2015, 4:26 PM

Jan 20 2015

meheff added a comment to D7041: [NVPTX] Emit .pragma "nounroll" for loops marked with nounroll.

LGTM

Jan 20 2015, 10:26 AM

Dec 15 2014

meheff committed rL224274: Clarify HowFarToZero computation when the step is a positive power of two..
Clarify HowFarToZero computation when the step is a positive power of two.
Dec 15 2014, 1:20 PM

Dec 11 2014

meheff committed rL223974: Fix PR21694. r219517 added a use of SCEV divide in HowFarToZero computation..
Fix PR21694. r219517 added a use of SCEV divide in HowFarToZero computation.
Dec 11 2014, 6:30 AM

Dec 10 2014

meheff closed D6546: Fix PR21694 - Revert improper use of divide in SCEV HowFarToZero computation.
Dec 10 2014, 2:56 PM

Dec 5 2014

meheff added a comment to D6546: Fix PR21694 - Revert improper use of divide in SCEV HowFarToZero computation.

Andrew, any comment on this? This just reverts back to a previous more
conservative (and correct) analysis.

Dec 5 2014, 1:30 PM

Dec 4 2014

meheff retitled D6546: Fix PR21694 - Revert improper use of divide in SCEV HowFarToZero computation from to Fix PR21694 - Revert improper use of divide in SCEV HowFarToZero computation.
Dec 4 2014, 7:15 PM

Nov 12 2014

meheff added a comment to D6195: [NVPTX] Add an NVPTX-specific TargetTransformInfo.

Small nit.

Nov 12 2014, 9:44 AM

Oct 10 2014

meheff retitled D5732: Call verifyPreservedAnalysis in LoopPass even if loop is deleted from to Call verifyPreservedAnalysis in LoopPass even if loop is deleted.
Oct 10 2014, 11:40 AM
meheff closed D5550: Enable unrolling of multi-exit loops.
Oct 10 2014, 10:54 AM
meheff added a comment to D5550: Enable unrolling of multi-exit loops.

Commited r219517.

Oct 10 2014, 10:49 AM
meheff added a comment to D5550: Enable unrolling of multi-exit loops.

Just fyi, I ran SPEC to see if there was any performance change. Performance difference was in the noise.

Oct 10 2014, 10:02 AM

Oct 8 2014

meheff added a comment to D5550: Enable unrolling of multi-exit loops.
In D5550#10, @atrick wrote:

One thing I'm concerned about though is that I think you're using SCEVDivision for the first time in the standard LLVM pipeline (outside of the delinearizer). SCEVDivision looks like it recurses over the expression operands. Every time someone does this, we eventually have to track down some case that results in pathological compile time. Can you prove that this recursion will never visit the same expression twice? If not, I think you need to add a visited set as we do elsewhere, or find another way to check for exact division.

Oct 8 2014, 2:16 PM
meheff updated subscribers of D5550: Enable unrolling of multi-exit loops.

Thanks for the review.

Oct 8 2014, 11:34 AM

Oct 3 2014

meheff added a comment to D5550: Enable unrolling of multi-exit loops.

Hi Andrew,

Oct 3 2014, 9:59 AM

Oct 2 2014

meheff updated the diff for D5550: Enable unrolling of multi-exit loops.
Oct 2 2014, 10:25 AM
meheff added inline comments to D5550: Enable unrolling of multi-exit loops.
Oct 2 2014, 10:17 AM
meheff updated D5550: Enable unrolling of multi-exit loops.
Oct 2 2014, 10:15 AM

Sep 30 2014

meheff added a comment to D5550: Enable unrolling of multi-exit loops.

The review diff tool doesn't do a very good job of presenting it, but a big chunk of the patch is moving the class SCEVDivision and a few static functions earlier in the file so they can be used in ScalarEvolution::HowFarToZero.

Sep 30 2014, 3:15 PM
meheff retitled D5550: Enable unrolling of multi-exit loops from to Enable unrolling of multi-exit loops.
Sep 30 2014, 2:35 PM

Aug 28 2014

meheff accepted D5093: [NVPTX] Make the alignment an explicit argument to ldu/ldg.

LGTM

Aug 28 2014, 8:40 AM

Jul 24 2014

meheff added a comment to D4662: Fix bug causing loop unrolling to be disabled in some cases for loops with '#pragma clang loop unroll_count(N)".

Committed as r213900.

Jul 24 2014, 3:45 PM
meheff updated the diff for D4662: Fix bug causing loop unrolling to be disabled in some cases for loops with '#pragma clang loop unroll_count(N)".

Thanks! Test added. Will lead with that next time ;-)

Jul 24 2014, 3:29 PM
meheff retitled D4662: Fix bug causing loop unrolling to be disabled in some cases for loops with '#pragma clang loop unroll_count(N)" from to Fix bug causing loop unrolling to be disabled in some cases for loops with '#pragma clang loop unroll_count(N)".
Jul 24 2014, 2:59 PM
meheff added a comment to D4659: [SROA] Fold a PHI node if all its incoming values are the same.

Just a couple suggestions which might simplify the code.

Jul 24 2014, 1:06 PM

Jul 23 2014

meheff retitled D4647: Add support for #pragma nounroll from to Add support for #pragma nounroll.
Jul 23 2014, 2:23 PM
meheff added a comment to D4643: Do not add unroll disable metadata after unrolling pass for loops with #pragma clang loop unroll(full).

Thanks! Committed with r213789.

Jul 23 2014, 1:14 PM
meheff retitled D4643: Do not add unroll disable metadata after unrolling pass for loops with #pragma clang loop unroll(full) from to Do not add unroll disable metadata after unrolling pass for loops with #pragma clang loop unroll(full).
Jul 23 2014, 11:43 AM

Jul 18 2014

meheff added a comment to D4571: Remove unroll pragma metadata after it is used.

Committed with r213412.

Jul 18 2014, 2:13 PM
meheff added inline comments to D4576: Add loop unrolling metadata descriptions to LangRef.rst.
Jul 18 2014, 10:28 AM
meheff added inline comments to D4576: Add loop unrolling metadata descriptions to LangRef.rst.
Jul 18 2014, 10:25 AM

Jul 17 2014

meheff retitled D4576: Add loop unrolling metadata descriptions to LangRef.rst from to Add loop unrolling metadata descriptions to LangRef.rst.
Jul 17 2014, 5:59 PM
meheff updated the diff for D4571: Remove unroll pragma metadata after it is used.
Jul 17 2014, 3:13 PM
meheff added a comment to D4571: Remove unroll pragma metadata after it is used.

Thanks for the comments. I'll immediately follow this with the updated patch.

Jul 17 2014, 3:11 PM
meheff retitled D4571: Remove unroll pragma metadata after it is used from to Remove unroll pragma metadata after it is used.
Jul 17 2014, 1:37 PM

Jul 16 2014

meheff accepted D4542: Partially revert r210444 due to performance regression.
Jul 16 2014, 3:49 PM
meheff added a comment to D4542: Partially revert r210444 due to performance regression.

LGTM.

Jul 16 2014, 1:06 PM

Jul 15 2014

meheff updated the diff for D4297: Add support for unroll pragma.

I added a warning if the wrong pragma unroll syntax is used with CUDA. When Tyler's change adding support for expressions in loop pragmas lands, I'll add a warning for the case when the pragma argument is not an integer literal in CUDA mode. Responses to Aaron's comments inline.

Jul 15 2014, 2:09 PM

Jul 10 2014

meheff added a comment to D4285: Partially fix PR20058: reduce compile time for loop unrolling with very high count.

commited as r212782.

Jul 10 2014, 4:41 PM
meheff updated the diff for D4285: Partially fix PR20058: reduce compile time for loop unrolling with very high count.

On Wed, Jun 25, 2014 at 9:34 AM, Eli Bendersky <eliben@google.com> wrote:

Is this part of the code well covered by tests? Maybe some more targeted
tests can be crafted.

Jul 10 2014, 11:51 AM

Jul 8 2014

meheff updated the diff for D4297: Add support for unroll pragma.

Thanks for the comments. Responses are below. With this patch "#pragma unroll" and "#pragma clang loop unroll" syntaxes are both supported. I also added "#pragma nounroll" as both icc and xlc support this pragma.

Jul 8 2014, 11:14 PM

Jul 1 2014

meheff updated the diff for D4297: Add support for unroll pragma.

Thanks all for your comments. This patch reduces much of the implementation duplication from the previous patch. Unroll and loop optimization hints now both share the same attribute.

Jul 1 2014, 3:59 PM

Jun 25 2014

meheff added inline comments to D4297: Add support for unroll pragma.
Jun 25 2014, 4:31 PM
meheff updated the diff for D4297: Add support for unroll pragma.

Thanks for the comments, Eli. This patch addresses them all.

Jun 25 2014, 4:31 PM