jdoerfert (Johannes Doerfert)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 30 2014, 6:27 AM (193 w, 4 d)

Recent Activity

Today

jdoerfert added a comment to rL315683: [SCEV] Teach SCEV to find maxBECount when loop endbound is variant.

@jdoerfert @grosser
Could we please add as an XFAIL for now, so that it doesn't keep failing the polly buildbots?

Mon, Oct 16, 8:14 AM

Fri, Oct 13

jdoerfert updated subscribers of rL315683: [SCEV] Teach SCEV to find maxBECount when loop endbound is variant.

My local Polly does not pass this test anyway, but I guess Tobias can help you out or maybe @Meinersbur or @bollu. In any case it doesn't seem to be a "loop bounds test" so it should be possible to change it a little bit and keep it around.

Fri, Oct 13, 2:32 PM

Mon, Oct 9

jdoerfert committed rL315208: Add CGO performance workshop dates.
Add CGO performance workshop dates
Mon, Oct 9, 9:00 AM

Thu, Sep 28

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

I never said your approach is wrong or has an entirely wrong design, but said that a similar approach caused issues in graphite,

Thu, Sep 28, 7:45 AM

Tue, Sep 26

jdoerfert added a comment to D38255: [WIP] Polyhedral Value Analysis.

Hi Johannes,

thanks for posting the patch. Obviously it misses comments, and unittests for the C++ interface, but it already gives a very good idea where you are heading. I also feel this patch covers a couple of areas:

  1. A new C++ interface which seems to serve multiple purposes
    • Automatic memory management
    • Add some additional math functionality not available in isl at the moment
    • Rename a couple of functions to provide a better interface to LLVM
    • Add a couple of helpers / convenience features on top of isl (e.g. automatic space adjustment)
    • Add some functionality that is directly needed for the domain/range modeling, but not necessarily belongs to the core properties of an isl set.

      All of these ideas make a lot of sense. I am however slightly worried regarding the large amount of hand-written interfacing code -- which is often replicated across different classes. How much of isl are you planning to cover? Will you also introduce callbacks and stuff? I wonder if there would be a way to avoid a lot of this duplication and possibly make the separation between the parts that are just isl interfaces and the parts that are indeed LLVM additions more clear. We also have a larger set of isl extensions in Polly -- including corresponding unit tests. I think sharing these would indeed make a lot of sense.
  2. The polyhedral value analysis

    The general interface makes a lot of sense - I played with this myself (after having introduced islpp), but waited for your proposal to come out. It is a clear extension of the LLVM-IR modeling we discussed together in Polly and you nicely mixed it with the ScalarEvolution design of LLVM. Cool! The code is currently a little too large to comment on specific items. Some of the things you do are already things we did in Polly but unfortunately missing most comments, others are clearly new and I need to read through them in detail. As I said on the mailing list thread, I feel that this analysis generally makes a lot of sense -- assuming we agree -- I would like to help getting it into LLVM. If you would like to do this incrementally -- the RISC-V model would make a lot of sense here. Do you believe there is a way to split this into smaller pieces? Maybe this can be split into:
  3. Basic Interface
  4. Analysis of scalar values without control flow
  5. Simple loops
  6. Wrapping

    I am especially interested in understanding (and having documented well) how integer wrapping is modeled.
  7. Specifically, I would like this analysis to speculate the wrapping introduced by casts as they commonly arise e.g. in OpenCL code get_global_id / get_local_id. Not sure if this is currently possibly / optional.
  8. Also, did you consider multi-dimensional output spaces. I discussed with Siddharth and we might be able to model certain polynomial expressions this way. Most interestingly, we might be able to do delinearization on this model, which would allow us to effectively delinearize even in the presence of integer casts.
  9. Can you make wrapping optional -- meaning can you potentially model precise wrapping?

    Also, do you happen to have a design description why all this works? If not, I wonder if we should create this together when building up the code incrementally in LLVM.

    I also have a random set of comments, but these are clearly by far not complete but just passby comments.
Tue, Sep 26, 3:30 PM
jdoerfert added inline comments to D38255: [WIP] Polyhedral Value Analysis.
Tue, Sep 26, 3:30 PM
jdoerfert added inline comments to D38255: [WIP] Polyhedral Value Analysis.
Tue, Sep 26, 3:29 PM

Mon, Sep 25

jdoerfert added a comment to D38255: [WIP] Polyhedral Value Analysis.

I forgot to include a softlink of the isl include folder. In the llvm src directory the following should be sufficent:

Mon, Sep 25, 3:37 PM
jdoerfert created D38255: [WIP] Polyhedral Value Analysis.
Mon, Sep 25, 1:32 PM
jdoerfert committed rL314131: Add the Second LLVM Performance Workshop at CGO.
Add the Second LLVM Performance Workshop at CGO
Mon, Sep 25, 11:17 AM

Tue, Sep 19

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

Just out of curiosity, did you compare the results (compile time, runtime, number of required overflow tracking intrinsics,...) to the simple bit-width tracking that was implemented in the IslExpr builder?

Tue, Sep 19, 3:05 PM

Apr 11 2017

jdoerfert added inline comments to D31842: [Polly] Load hoisting of indirect loads.
Apr 11 2017, 4:26 AM

Apr 2 2017

jdoerfert added a comment to D31582: Use caller information to avoid noalias metadata.

It's early in the morning, but I'm having a little trouble understanding the overall goal. Is this fixing a bug, it just being done because it's a waste of time to add the metadata in this situation.

Apr 2 2017, 10:48 AM
jdoerfert created D31582: Use caller information to avoid noalias metadata.
Apr 2 2017, 9:13 AM
jdoerfert updated the summary of D29251: [PIR] A sequentialization pass for parallel regions.
Apr 2 2017, 7:52 AM
jdoerfert added reviewers for D29251: [PIR] A sequentialization pass for parallel regions: hfinkel, chandlerc, xtian.
Apr 2 2017, 7:48 AM
jdoerfert updated the diff for D29251: [PIR] A sequentialization pass for parallel regions.

Utilize the ParallelRegionInfo pass and emit parallel loop metadata

Apr 2 2017, 7:47 AM
jdoerfert added a dependent revision for D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree: D29251: [PIR] A sequentialization pass for parallel regions.
Apr 2 2017, 7:46 AM
jdoerfert added a dependent revision for D31580: [PIR] Allow to detect parallel loops using the ParallelRegionInfo.: D29251: [PIR] A sequentialization pass for parallel regions.
Apr 2 2017, 7:46 AM
jdoerfert added dependencies for D29251: [PIR] A sequentialization pass for parallel regions: D31580: [PIR] Allow to detect parallel loops using the ParallelRegionInfo., D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree.
Apr 2 2017, 7:46 AM
jdoerfert added a dependency for D31580: [PIR] Allow to detect parallel loops using the ParallelRegionInfo.: D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree.
Apr 2 2017, 7:42 AM
jdoerfert added a dependent revision for D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree: D31580: [PIR] Allow to detect parallel loops using the ParallelRegionInfo..
Apr 2 2017, 7:42 AM
jdoerfert created D31580: [PIR] Allow to detect parallel loops using the ParallelRegionInfo..
Apr 2 2017, 7:42 AM
jdoerfert added a dependent revision for D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree: D31579: [PIR] Consult the ParallelRegionInfo before promoting allocas.
Apr 2 2017, 7:41 AM
jdoerfert added a dependency for D31579: [PIR] Consult the ParallelRegionInfo before promoting allocas: D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree.
Apr 2 2017, 7:41 AM
jdoerfert created D31579: [PIR] Consult the ParallelRegionInfo before promoting allocas.
Apr 2 2017, 7:38 AM
jdoerfert updated the diff for D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree.

Still trying to separate a single commit

Apr 2 2017, 7:32 AM
jdoerfert updated the diff for D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree.

Try to make arcanist upload only one commit

Apr 2 2017, 7:29 AM
jdoerfert updated the diff for D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree.

Add more functionality

Apr 2 2017, 7:26 AM
jdoerfert awarded D31570: Revert "Remove autoconf support" a Party Time token.
Apr 2 2017, 3:11 AM
jdoerfert abandoned D20230: [WIP] Minimal SCEV interval analysis.
Apr 2 2017, 3:07 AM

Mar 7 2017

jdoerfert added a comment to D30376: Playing with tokens OR breaking coroutines manually.

I agree that verifier could be more rigorous with checking that coroutine intrinsics are used properly, but, I would not want to change the tests ex0 - ex5.ll as you suggested.
ex?.ll tests are examples from the coroutine walkthrough in LLVM Coroutines doc and I would like to keep them in sync with the tutorial. They represent minimally useful, but still sensible coroutines.

I would not object of adding new tests along the lines that your suggested (possibly with verifier changes to give better diagnostics) where assumptions about coroutine structure are violated.

And I would like to add that I appreciate very much your interest in LLVM coroutines and proposing this patch.

Mar 7 2017, 2:52 AM

Mar 3 2017

jdoerfert added reviewers for D30353: [PIR] Add documentation for PIR instructions: hfinkel, chandlerc, xtian.
Mar 3 2017, 5:16 AM
jdoerfert added reviewers for D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree: hfinkel, chandlerc, xtian.
Mar 3 2017, 5:15 AM
jdoerfert added reviewers for D29250: [PIR] Add fork, join and halt instructions: hfinkel, chandlerc, xtian.
Mar 3 2017, 5:15 AM

Feb 27 2017

jdoerfert added inline comments to D29251: [PIR] A sequentialization pass for parallel regions.
Feb 27 2017, 2:57 AM

Feb 25 2017

jdoerfert created D30376: Playing with tokens OR breaking coroutines manually.
Feb 25 2017, 2:39 AM

Feb 24 2017

jdoerfert added a comment to D29250: [PIR] Add fork, join and halt instructions.

Is there another patch which updates the langref? The semantics are most important of all.

Please see https://reviews.llvm.org/D30353 for a draft documentation and semantics.

Feb 24 2017, 2:18 PM
jdoerfert added a dependency for D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree: D29250: [PIR] Add fork, join and halt instructions.
Feb 24 2017, 2:17 PM
jdoerfert added a dependent revision for D29250: [PIR] Add fork, join and halt instructions: D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree.
Feb 24 2017, 2:17 PM
jdoerfert added a dependent revision for D29250: [PIR] Add fork, join and halt instructions: D30353: [PIR] Add documentation for PIR instructions.
Feb 24 2017, 2:17 PM
jdoerfert added a dependency for D30353: [PIR] Add documentation for PIR instructions: D29250: [PIR] Add fork, join and halt instructions.
Feb 24 2017, 2:17 PM
jdoerfert created D30354: [PIR] Add ParallelRegionInfoPass that builds the parallel region tree.
Feb 24 2017, 2:15 PM
jdoerfert created D30353: [PIR] Add documentation for PIR instructions.
Feb 24 2017, 2:11 PM

Feb 22 2017

jdoerfert updated the diff for D29251: [PIR] A sequentialization pass for parallel regions.

Update to match new D29250

Feb 22 2017, 7:56 AM
jdoerfert updated the diff for D29250: [PIR] Add fork, join and halt instructions.

Fix smaller issues and minor renaming

Feb 22 2017, 6:41 AM

Jan 29 2017

jdoerfert added a comment to D29250: [PIR] Add fork, join and halt instructions.

Is there another patch which updates the langref? The semantics are most important of all.

Jan 29 2017, 9:25 AM

Jan 28 2017

jdoerfert added a comment to D29250: [PIR] Add fork, join and halt instructions.

I'm not sure who's the proper person to review that, but that wouldn't be me. Did you discussed adding these instruction with someone ? If so, who is that ? maybe you want to add these people as reviewer.

Jan 28 2017, 7:30 AM
jdoerfert added a dependency for D29251: [PIR] A sequentialization pass for parallel regions: D29250: [PIR] Add fork, join and halt instructions.
Jan 28 2017, 5:53 AM
jdoerfert added a dependent revision for D29250: [PIR] Add fork, join and halt instructions: D29251: [PIR] A sequentialization pass for parallel regions.
Jan 28 2017, 5:53 AM
jdoerfert created D29251: [PIR] A sequentialization pass for parallel regions.
Jan 28 2017, 5:50 AM
jdoerfert created D29250: [PIR] Add fork, join and halt instructions.
Jan 28 2017, 5:49 AM

Jan 26 2017

jdoerfert added a reviewer for D29174: [Utils] Update comment in vimrc: sunfish.
Jan 26 2017, 9:03 AM

Dec 6 2016

jdoerfert committed rL288806: Add missing -lm to the CMake configuration of 433.milc.
Add missing -lm to the CMake configuration of 433.milc
Dec 6 2016, 5:18 AM

Dec 2 2016

jdoerfert committed rL288521: Allow to disable unsigned operations (zext, icmp ugt, ...).
Allow to disable unsigned operations (zext, icmp ugt, ...)
Dec 2 2016, 10:06 AM
jdoerfert committed rL288516: Do not allow multiple possibly aliasing ptrs in an expression.
Do not allow multiple possibly aliasing ptrs in an expression
Dec 2 2016, 9:59 AM
jdoerfert committed rL288514: Rerun mem2reg after the inliner.
Rerun mem2reg after the inliner
Dec 2 2016, 9:54 AM

Dec 1 2016

jdoerfert committed rL288329: [NFC] Check for feasibility prior to the profitability check.
[NFC] Check for feasibility prior to the profitability check
Dec 1 2016, 3:22 AM
jdoerfert committed rL288328: [FIX] Do not try to hoist obviously overwritten loads.
[FIX] Do not try to hoist obviously overwritten loads
Dec 1 2016, 3:21 AM

Nov 18 2016

jdoerfert committed rL287347: [NFC] Adjust naming scheme of statistic variables.
[NFC] Adjust naming scheme of statistic variables
Nov 18 2016, 6:47 AM

Nov 17 2016

jdoerfert committed rL287272: Probably overwritten loads should not be considered hoistable.
Probably overwritten loads should not be considered hoistable
Nov 17 2016, 2:35 PM
jdoerfert committed rL287271: [NFC] Add flag to disable error block assumptions.
[NFC] Add flag to disable error block assumptions
Nov 17 2016, 2:26 PM
jdoerfert committed rL287270: [FIX] Do not try to hoist memory intrinsic.
[FIX] Do not try to hoist memory intrinsic
Nov 17 2016, 2:21 PM
jdoerfert committed rL287269: [NFC] Skip over trivial assumptions.
[NFC] Skip over trivial assumptions
Nov 17 2016, 2:18 PM
jdoerfert committed rL287267: [DBG] Collect statistics about actually versioned SCoPs.
[DBG] Collect statistics about actually versioned SCoPs
Nov 17 2016, 2:05 PM
jdoerfert committed rL287265: [DBG] Allow to emit the RTC value at runtime.
[DBG] Allow to emit the RTC value at runtime
Nov 17 2016, 1:59 PM
jdoerfert committed rL287263: [DBG] Collect statistics about statically infeasible SCoPs.
[DBG] Collect statistics about statically infeasible SCoPs
Nov 17 2016, 1:54 PM
jdoerfert committed rL287261: [DBG] Collect statistics about taken assumptions.
[DBG] Collect statistics about taken assumptions
Nov 17 2016, 1:51 PM

Nov 15 2016

jdoerfert committed rL286986: Sort the files generated by SPEC benchmarks.
Sort the files generated by SPEC benchmarks
Nov 15 2016, 9:31 AM
jdoerfert closed D26679: [test-suite] Sort the SPEC file outputs to force a deterministic result by committing rL286986: Sort the files generated by SPEC benchmarks.
Nov 15 2016, 9:31 AM
jdoerfert added a comment to D26679: [test-suite] Sort the SPEC file outputs to force a deterministic result.

Thanks for the tip!

Nov 15 2016, 9:27 AM
jdoerfert committed rL286985: [test-suite] Always use -std=gnu89 for 253.perlbmk.
[test-suite] Always use -std=gnu89 for 253.perlbmk
Nov 15 2016, 9:24 AM
jdoerfert closed D26680: [test-suite] Always use -std=gnu89 for 253.perlbmk by committing rL286985: [test-suite] Always use -std=gnu89 for 253.perlbmk.
Nov 15 2016, 9:24 AM
jdoerfert retitled D26680: [test-suite] Always use -std=gnu89 for 253.perlbmk from to [test-suite] Always use -std=gnu89 for 253.perlbmk.
Nov 15 2016, 9:00 AM
jdoerfert retitled D26679: [test-suite] Sort the SPEC file outputs to force a deterministic result from to [test-suite] Sort the SPEC file outputs to force a deterministic result.
Nov 15 2016, 8:59 AM

Nov 1 2016

jdoerfert accepted D25706: [ScopInfo] Make memset etc. affine where possible..

LGTM.

Nov 1 2016, 10:51 AM

Oct 21 2016

jdoerfert accepted D25287: [SCEVAffinator] Make precise modular math more correct..

LGTM.

Oct 21 2016, 8:14 AM
jdoerfert added inline comments to D25807: Check latch block terminator instruction is a branch instruction.
Oct 21 2016, 7:03 AM

Oct 18 2016

jdoerfert added a comment to D25706: [ScopInfo] Make memset etc. affine where possible..

You also have to adjust the call location to

buildMemIntrinsicAccessRelation

but I think this is the best way to go.

Oct 18 2016, 3:26 PM
jdoerfert added a comment to D25706: [ScopInfo] Make memset etc. affine where possible..

We ran into a case similar to the included testcase, where we need to generate a runtime alias check with a memset in order to vectorize a loop. (memset isn't really non-affine, but we currently model it that way.)

Oct 18 2016, 2:58 PM
jdoerfert added a comment to D25706: [ScopInfo] Make memset etc. affine where possible..

While I agree with the commit message, I am not aware of any real benefit this will provide us given that we only leverage the constant range ScalarEvolution range analysis. If we would use a better one, e.g., along the lines of https://reviews.llvm.org/D20230, I think this patch does make sense.

Oct 18 2016, 1:30 AM

Oct 14 2016

jdoerfert added a comment to D25584: [polly codegen] Handle multi-dimensional invariant load..

I realized that we should check hoisting is actually performed.

Oct 14 2016, 1:18 AM
jdoerfert added a comment to D25584: [polly codegen] Handle multi-dimensional invariant load..

Assuming all checks prior to code generation can handle this case properly this is the "right way" to fix this. One modification and it should be good to go.

Oct 14 2016, 1:06 AM

Oct 13 2016

jdoerfert added a comment to D25287: [SCEVAffinator] Make precise modular math more correct..

Looks almost good. I am not sure about the i1 thing and this one test case though. Does lnt pass?

Oct 13 2016, 7:17 AM

Oct 7 2016

jdoerfert added inline comments to D25287: [SCEVAffinator] Make precise modular math more correct..
Oct 7 2016, 4:34 PM

Oct 6 2016

jdoerfert added a comment to D25287: [SCEVAffinator] Make precise modular math more correct..

Hi Eli,

Oct 6 2016, 3:22 AM

Sep 28 2016

jdoerfert abandoned D20229: Remove known constraints from the invalid context.

I won't.

Sep 28 2016, 2:11 AM

Sep 7 2016

jdoerfert added a comment to D24310: [Polly] Add -polly-flatten-schedule pass..

my 2 cents.

Sep 7 2016, 1:50 PM · Restricted Project

Aug 12 2016

jdoerfert accepted D22407: [Polly][GSoC 2016]New API to check vectorization legality of a loop.

In general this LGTM. Maybe look at my last comments and once you finalize this patch ask somebody to push it for you.

Aug 12 2016, 5:36 AM

Jul 26 2016

jdoerfert updated subscribers of D22793: IR: Introduce inbounds attribute on getelementptr indices..
Jul 26 2016, 2:29 AM

Jul 25 2016

jdoerfert committed rL276637: [GSoC] Add PolyhedralInfo pass - new interface to polly analysis.
[GSoC] Add PolyhedralInfo pass - new interface to polly analysis
Jul 25 2016, 5:56 AM
jdoerfert closed D21486: [Polly][GSoC 2016]Add PolyhedralInfo pass- new interface to Polly Analysis by committing rL276637: [GSoC] Add PolyhedralInfo pass - new interface to polly analysis.
Jul 25 2016, 5:56 AM
jdoerfert committed rL276631: [GSoC] Do not process SCoPs with infeasible runtime context.
[GSoC] Do not process SCoPs with infeasible runtime context
Jul 25 2016, 5:48 AM
jdoerfert closed D22402: [Polly][GSoC 2016]Do not process SCoPs with infeasible runtime context by committing rL276631: [GSoC] Do not process SCoPs with infeasible runtime context.
Jul 25 2016, 5:48 AM

Jul 18 2016

jdoerfert added inline comments to D22407: [Polly][GSoC 2016]New API to check vectorization legality of a loop.
Jul 18 2016, 12:18 AM

Jul 15 2016

jdoerfert accepted D22402: [Polly][GSoC 2016]Do not process SCoPs with infeasible runtime context.

Except the single comment LGTM.

Jul 15 2016, 7:54 AM
jdoerfert accepted D21486: [Polly][GSoC 2016]Add PolyhedralInfo pass- new interface to Polly Analysis.

LGTM.

Jul 15 2016, 7:53 AM
jdoerfert added inline comments to D22407: [Polly][GSoC 2016]New API to check vectorization legality of a loop.
Jul 15 2016, 7:53 AM
jdoerfert added inline comments to D22407: [Polly][GSoC 2016]New API to check vectorization legality of a loop.
Jul 15 2016, 6:26 AM
jdoerfert added a comment to D21486: [Polly][GSoC 2016]Add PolyhedralInfo pass- new interface to Polly Analysis.

Does this pass LNT when it is part of the Polly pipeline [profitable but also unprofitable] or are there any crashes? If not I would go ahead and commit it for you.

Jul 15 2016, 6:22 AM