Page MenuHomePhabricator

etiotto (Ettore Tiotto)
User

Projects

User does not belong to any projects.

User Details

User Since
Apr 11 2019, 9:55 AM (75 w, 3 d)

Recent Activity

Thu, Sep 10

etiotto committed rG6b13cfe7399b: [ArgumentPromotion]: Copy function metadata after promoting arguments (authored by etiotto).
[ArgumentPromotion]: Copy function metadata after promoting arguments
Thu, Sep 10, 10:10 AM
etiotto closed D86630: [ArgumentPromotion]: Copy function metadata after promoting arguments.
Thu, Sep 10, 10:10 AM · Restricted Project

Wed, Sep 9

etiotto added inline comments to D87045: [LoopNest] Handle loop-nest passes in LoopPassManager.
Wed, Sep 9, 10:44 AM · Restricted Project

Wed, Sep 2

etiotto retitled D86630: [ArgumentPromotion]: Copy function metadata after promoting arguments from [ArgumentPromotion]: Copy function annotation after promoting arguments to [ArgumentPromotion]: Copy function metadata after promoting arguments.
Wed, Sep 2, 7:20 AM · Restricted Project

Tue, Sep 1

etiotto added a comment to D86630: [ArgumentPromotion]: Copy function metadata after promoting arguments.

ping

Tue, Sep 1, 6:40 AM · Restricted Project

Mon, Aug 31

etiotto added inline comments to rG7ed8124d46f9: [HeapProf] Clang and LLVM support for heap profiling instrumentation.
Mon, Aug 31, 2:19 PM

Thu, Aug 27

etiotto updated the diff for D86630: [ArgumentPromotion]: Copy function metadata after promoting arguments.

Address code review comments.

Thu, Aug 27, 9:30 AM · Restricted Project
etiotto added inline comments to D86630: [ArgumentPromotion]: Copy function metadata after promoting arguments.
Thu, Aug 27, 9:29 AM · Restricted Project
etiotto updated the diff for D86630: [ArgumentPromotion]: Copy function metadata after promoting arguments.

Fix quotes in profile.ll

Thu, Aug 27, 8:01 AM · Restricted Project

Wed, Aug 26

etiotto requested review of D86630: [ArgumentPromotion]: Copy function metadata after promoting arguments.
Wed, Aug 26, 8:29 AM · Restricted Project

Mon, Aug 24

etiotto added a comment to D86262: [LoopIdiomRecognizePass] Options to disable part or the entire Loop Idiom Recognize Pass.

Here are a couple of programs to test the performance of a simple memset vs a simple initialization loop. On my system (PPC) even this short init. loop is slower than the memset.

% cat loop.c
#include <string.h>
int main() {
  int A[N];
  for (int n=0; n<STEPS; ++n)
    for(int i=0;i<N;++i)
      A[i] = 0;
  return A[0];
}

% gcc -O0 loop.c -DN=10 -DSTEPS=1000000; time ./a.out
./a.out 0.10s user 0.00s system 99% cpu 0.099 total

% cat memset.c
#include <string.h>
int main() {
  int A[N];
  for (int n=0; n<STEPS; ++n)
    memset(A, 0, N * sizeof(int));
  return A[0];
}

% gcc -O0 memset.c -DN=10 -DSTEPS=1000000; time ./a.out
./a.out 0.02s user 0.00s system 99% cpu 0.022 total

Mon, Aug 24, 7:28 AM · Restricted Project
etiotto accepted D86262: [LoopIdiomRecognizePass] Options to disable part or the entire Loop Idiom Recognize Pass.

Transforming a loop into a memset or memcpy is not *always* profitable (it depends on how many elements are initialized/copied and on the efficiency of the target architecture implementation for those libraries) but is often better than a loop. The low level optimizer should change short memset/memcpy back into a sequence of assignments, IMO this should not be done in opt because the exact length for which memset is less profitable than individual assignment is a function of the target architecture. As for this PR, adding an option to disable the optimization is a good thing as it provides more flexibility to users that for whatever reason do not want the transformation to run (and is also handy for compiler developers when debugging code). And more flexibility is a good thing.

Mon, Aug 24, 7:01 AM · Restricted Project
etiotto added a comment to D86262: [LoopIdiomRecognizePass] Options to disable part or the entire Loop Idiom Recognize Pass.

I'd like to see a PhaseOrdering test showing the IR that is not optimized due to the DA being unaware about these intrinsics.

Mon, Aug 24, 6:49 AM · Restricted Project

Aug 21 2020

etiotto accepted D86133: [LoopNest] False negative of `arePerfectlyNested` with LCSSA loops.
Aug 21 2020, 9:44 AM · Restricted Project

Aug 13 2020

etiotto added a comment to D68789: [LoopNest]: Analysis to discover properties of a loop nest..

I have trouble finding the definition of LoopNestAnalysis::run.

Aug 13 2020, 2:05 PM · Restricted Project

Jul 31 2020

etiotto added inline comments to D84764: Fix computeHostNumPhysicalCores() for Linux on POWER and Linux on Z.
Jul 31 2020, 1:55 PM · Restricted Project

Jul 30 2020

etiotto committed rG36a4f1037628: Fix computeHostNumPhysicalCores() for Linux on POWER and Linux on Z (authored by etiotto).
Fix computeHostNumPhysicalCores() for Linux on POWER and Linux on Z
Jul 30 2020, 11:06 AM
etiotto closed D84764: Fix computeHostNumPhysicalCores() for Linux on POWER and Linux on Z.
Jul 30 2020, 11:06 AM · Restricted Project

Jul 29 2020

etiotto added a comment to D84764: Fix computeHostNumPhysicalCores() for Linux on POWER and Linux on Z.

@uweigand and @Kai I forgot to fix a test case. Now fixed are you still ok with the test case change?

Jul 29 2020, 2:01 PM · Restricted Project
etiotto updated the diff for D84764: Fix computeHostNumPhysicalCores() for Linux on POWER and Linux on Z.

Fix test case for PPC64 and SystemZ

Jul 29 2020, 1:58 PM · Restricted Project
etiotto updated the diff for D84764: Fix computeHostNumPhysicalCores() for Linux on POWER and Linux on Z.

Fix formatting

Jul 29 2020, 7:07 AM · Restricted Project

Jul 28 2020

etiotto requested review of D84764: Fix computeHostNumPhysicalCores() for Linux on POWER and Linux on Z.
Jul 28 2020, 8:56 AM · Restricted Project

Jul 2 2020

etiotto added a comment to D82895: [NFC][LoopInfo] Document empty().

I think that isInnermost() would make even more sense.

I'm fine with adding bool isInnermost() const { return empty(); } and while we are at it, bool isOutermost().

@fhahn @Meinersbur @Whitney @etiotto Objections?

Jul 2 2020, 2:36 PM · Restricted Project

Jun 4 2020

etiotto added inline comments to D81053: [LoopUnroll] Allow loops with multiple exiting blocks where loop latch is not necessary one of them..
Jun 4 2020, 8:44 AM · Restricted Project

May 28 2020

etiotto accepted D80477: [LoopUnroll] Support loops with exiting block that is neither header nor latch..

LGTM

May 28 2020, 7:34 AM · Restricted Project

May 25 2020

etiotto added inline comments to D80477: [LoopUnroll] Support loops with exiting block that is neither header nor latch..
May 25 2020, 10:42 AM · Restricted Project
etiotto updated the summary of D80477: [LoopUnroll] Support loops with exiting block that is neither header nor latch..
May 25 2020, 10:10 AM · Restricted Project

Mar 13 2020

etiotto retitled D75920: [LoopCacheAnalysis] Improve cost heuristic. from [LoopCacheAnalysis}: Improve cost heuristic. to [LoopCacheAnalysis] Improve cost heuristic..
Mar 13 2020, 11:49 AM · Restricted Project

Mar 12 2020

etiotto updated the diff for D75920: [LoopCacheAnalysis] Improve cost heuristic..
Mar 12 2020, 8:40 AM · Restricted Project

Mar 10 2020

etiotto created D75920: [LoopCacheAnalysis] Improve cost heuristic..
Mar 10 2020, 6:58 AM · Restricted Project

Feb 12 2020

etiotto added inline comments to D68789: [LoopNest]: Analysis to discover properties of a loop nest..
Feb 12 2020, 7:09 AM · Restricted Project

Feb 11 2020

etiotto added a comment to D73801: [LoopFission]: Loop Fission Interference Graph (FIG).

I choose to name the pass Loop Fission to avoid confusion with the existing LoopDistribution pass (eventually Loop Fission should replace that pass). Also Loop Fission is the opposite of Loop Fusion :-) ?

Feb 11 2020, 7:50 AM · Restricted Project
etiotto updated the diff for D68789: [LoopNest]: Analysis to discover properties of a loop nest..

Addressed review comments from @Meinersbur

Feb 11 2020, 7:42 AM · Restricted Project

Jan 31 2020

etiotto updated the diff for D73801: [LoopFission]: Loop Fission Interference Graph (FIG).
Jan 31 2020, 1:12 PM · Restricted Project
etiotto added reviewers for D73801: [LoopFission]: Loop Fission Interference Graph (FIG): Meinersbur, kbarton, bmahjour, Whitney, fhahn, zhongduo, amehsan.
Jan 31 2020, 12:53 PM · Restricted Project
etiotto updated subscribers of D73801: [LoopFission]: Loop Fission Interference Graph (FIG).
Jan 31 2020, 12:53 PM · Restricted Project
etiotto created D73801: [LoopFission]: Loop Fission Interference Graph (FIG).
Jan 31 2020, 12:44 PM · Restricted Project

Jan 30 2020

etiotto added a comment to D68789: [LoopNest]: Analysis to discover properties of a loop nest..

ping

Jan 30 2020, 12:12 PM · Restricted Project

Jan 13 2020

etiotto added a comment to D68789: [LoopNest]: Analysis to discover properties of a loop nest..

ping

Jan 13 2020, 7:25 AM · Restricted Project

Dec 18 2019

etiotto added inline comments to D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent..
Dec 18 2019, 2:19 PM · Restricted Project
etiotto updated the diff for D68789: [LoopNest]: Analysis to discover properties of a loop nest..

Addressing code review comments.

Dec 18 2019, 1:50 PM · Restricted Project
etiotto added inline comments to D68789: [LoopNest]: Analysis to discover properties of a loop nest..
Dec 18 2019, 1:50 PM · Restricted Project

Dec 10 2019

etiotto added inline comments to D68789: [LoopNest]: Analysis to discover properties of a loop nest..
Dec 10 2019, 1:43 PM · Restricted Project
etiotto updated the diff for D68789: [LoopNest]: Analysis to discover properties of a loop nest..

Based on the feedback received during code review I have added a new public member function called 'getPerfectLoops' which can be used to retrieve a list of loops that are perfect with respect to each other.
For example, given the following loop nest containing 4 loops, 'getPerfectLoops' would return {{L1,L2},{L3,L4}}.

for(i) // L1
  for(j) // L2
    <code>
    for(k) // L3
       for(l) // L4
Dec 10 2019, 1:42 PM · Restricted Project

Nov 20 2019

etiotto added a comment to D68789: [LoopNest]: Analysis to discover properties of a loop nest..

[suggestion] Add a methods that returns/fills a vector with all the Loop*s that are part of the perfect loop nest.

That sounds like a good idea. I'd suggest returning a vector of vectors actually in case where there are multiple perfect sub nests in a loop nest. ie:

L1
  L2
   <code>
    L3
      L4
        L5

return:
{{L1,L2},{L3,L4,L5}}

Nov 20 2019, 1:32 PM · Restricted Project
etiotto updated the diff for D68789: [LoopNest]: Analysis to discover properties of a loop nest..

Addressing code review comments from Michael.

Nov 20 2019, 9:45 AM · Restricted Project
etiotto added inline comments to D68789: [LoopNest]: Analysis to discover properties of a loop nest..
Nov 20 2019, 9:36 AM · Restricted Project

Nov 4 2019

etiotto updated the diff for D69821: [NFC]: Fix PVS Studio warning in LoopNestAnalysis.
Nov 4 2019, 2:35 PM · Restricted Project
etiotto updated the diff for D69821: [NFC]: Fix PVS Studio warning in LoopNestAnalysis.
Nov 4 2019, 2:29 PM · Restricted Project
etiotto added a comment to D63459: Loop Cache Analysis.

/home/xbolva00/LLVM/llvm-project/llvm/lib/Analysis/LoopCacheAnalysis.cpp 353 warn V612 An unconditional 'return' within a loop.

This indeed does not look right. There are beaks and returns in the loop, but no continue. Meaning the loop is only iterated for one element (in this case: the innermost loop). I think nothing else than the innermost loop is needed for delinearization, in which case it could be made a conditional instead of a for-statement.

/home/xbolva00/LLVM/llvm-project/llvm/lib/Analysis/LoopCacheAnalysis.cpp 456 err V502 Perhaps the '?:' operator works in a different way than it was expected. The '?:' operator has a lower priority than the '==' operator.

TRT(TRT == None ? Optional<unsigned>(TemporalReuseThreshold) : TRT),

Could add parens around TRT == None to silence the analyzer.

Nov 4 2019, 1:19 PM · Restricted Project
etiotto updated the summary of D69821: [NFC]: Fix PVS Studio warning in LoopNestAnalysis.
Nov 4 2019, 1:19 PM · Restricted Project
etiotto created D69821: [NFC]: Fix PVS Studio warning in LoopNestAnalysis.
Nov 4 2019, 1:10 PM · Restricted Project

Oct 29 2019

etiotto updated the diff for D68789: [LoopNest]: Analysis to discover properties of a loop nest..

Partially address code review comments from @Meinersbur.

Oct 29 2019, 1:59 PM · Restricted Project
etiotto added inline comments to D68789: [LoopNest]: Analysis to discover properties of a loop nest..
Oct 29 2019, 1:49 PM · Restricted Project
etiotto added a comment to D68474: [DirectedGraph]: Add setTargetNode member function.

ping

Oct 29 2019, 12:58 PM · Restricted Project

Oct 16 2019

etiotto added a comment to D68474: [DirectedGraph]: Add setTargetNode member function.

ping

Oct 16 2019, 12:31 PM · Restricted Project

Oct 11 2019

etiotto added inline comments to D68827: [DDG] Data Dependence Graph - Pi Block.
Oct 11 2019, 6:40 AM · Restricted Project

Oct 10 2019

etiotto updated the summary of D68789: [LoopNest]: Analysis to discover properties of a loop nest..
Oct 10 2019, 1:56 PM · Restricted Project
etiotto retitled D68789: [LoopNest]: Analysis to discover properties of a loop nest. from [LoopNext]: Analysis to discover properties of a loop nest. to [LoopNest]: Analysis to discover properties of a loop nest..
Oct 10 2019, 1:25 PM · Restricted Project
etiotto added a reviewer for D68789: [LoopNest]: Analysis to discover properties of a loop nest.: ppc-slack.
Oct 10 2019, 1:25 PM · Restricted Project
etiotto updated the summary of D68789: [LoopNest]: Analysis to discover properties of a loop nest..
Oct 10 2019, 1:25 PM · Restricted Project
etiotto updated the summary of D68789: [LoopNest]: Analysis to discover properties of a loop nest..
Oct 10 2019, 7:44 AM · Restricted Project
etiotto created D68789: [LoopNest]: Analysis to discover properties of a loop nest..
Oct 10 2019, 7:44 AM · Restricted Project

Oct 8 2019

etiotto added reviewers for D68474: [DirectedGraph]: Add setTargetNode member function: fhahn, kbarton, dmgreen.
Oct 8 2019, 7:29 AM · Restricted Project

Oct 4 2019

etiotto added a reviewer for D68474: [DirectedGraph]: Add setTargetNode member function: Meinersbur.
Oct 4 2019, 11:29 AM · Restricted Project
etiotto added a reviewer for D68474: [DirectedGraph]: Add setTargetNode member function: jdoerfert.
Oct 4 2019, 11:29 AM · Restricted Project
etiotto created D68474: [DirectedGraph]: Add setTargetNode member function.
Oct 4 2019, 11:20 AM · Restricted Project

Aug 13 2019

etiotto added inline comments to D65464: [LoopFusion] Add ability to fuse guarded loops.
Aug 13 2019, 7:24 AM · Restricted Project

Aug 12 2019

etiotto added a comment to D63459: Loop Cache Analysis.

/home/xbolva00/LLVM/llvm/lib/Analysis/LoopCacheAnalysis.cpp:110:14: warning: ‘llvm::raw_ostream& llvm::operator<<(llvm::raw_ostream&, const llvm::IndexedReference&)’ has not been declared within llvm
raw_ostream &llvm::operator<<(raw_ostream &OS, const IndexedReference &R) {

^~~~

In file included from /home/xbolva00/LLVM/llvm/lib/Analysis/LoopCacheAnalysis.cpp:28:0:
/home/xbolva00/LLVM/llvm/include/llvm/Analysis/LoopCacheAnalysis.h:45:23: note: only here as a friend

friend raw_ostream &operator<<(raw_ostream &OS, const IndexedReference &R);
                    ^~~~~~~~

/home/xbolva00/LLVM/llvm/lib/Analysis/LoopCacheAnalysis.cpp:443:14: warning: ‘llvm::raw_ostream& llvm::operator<<(llvm::raw_ostream&, const llvm::CacheCost&)’ has not been declared within llvm
raw_ostream &llvm::operator<<(raw_ostream &OS, const CacheCost &CC) {

^~~~

In file included from /home/xbolva00/LLVM/llvm/lib/Analysis/LoopCacheAnalysis.cpp:28:0:
/home/xbolva00/LLVM/llvm/include/llvm/Analysis/LoopCacheAnalysis.h:174:23: note: only here as a friend

friend raw_ostream &operator<<(raw_ostream &OS, const CacheCost &CC);

GCC 7 Linux.

Aug 12 2019, 3:13 PM · Restricted Project
etiotto updated the diff for D63459: Loop Cache Analysis.

Fix build warning for operator<< when using GCC 7.

Aug 12 2019, 3:11 PM · Restricted Project

Aug 9 2019

etiotto updated the diff for D63459: Loop Cache Analysis.
Aug 9 2019, 8:54 AM · Restricted Project

Aug 8 2019

etiotto updated the diff for D63459: Loop Cache Analysis.
Aug 8 2019, 2:20 PM · Restricted Project

Aug 6 2019

etiotto added inline comments to D63459: Loop Cache Analysis.
Aug 6 2019, 12:00 PM · Restricted Project
etiotto updated the diff for D63459: Loop Cache Analysis.

Added a command line option to specify the threshold for temporal reuse.

Aug 6 2019, 11:57 AM · Restricted Project

Jul 31 2019

etiotto added a comment to D63459: Loop Cache Analysis.

Right, are you planning on submitting a patch for loop interchange upstream?

I used the printer on some of the loop interchange tests, but the delinearization does not support some cases there yet. I hope I find some time to look into that next week and maybe also integrating it into loop interchange unless you plan to do so.

Jul 31 2019, 6:20 AM · Restricted Project

Jul 30 2019

etiotto added a comment to D63459: Loop Cache Analysis.

Can you re-run clang-format on the latest version of the patch? I think it would be good to get an in-tree user of this soon, to make sure the modeling works as expected on real hardware/benchmarks. Do you have a timeline to get this used? I think you mentioned LoopFusion as one of the first planned users?

Jul 30 2019, 1:51 PM · Restricted Project
etiotto updated the diff for D63459: Loop Cache Analysis.

Run clang-format, address comments from @fhahn.

Jul 30 2019, 1:50 PM · Restricted Project
etiotto accepted D63844: [LoopFusion] Extend use of OptimizationRemarkEmitter.

LGTM. I found a typo, you can fix it while committing.

Jul 30 2019, 6:36 AM · Restricted Project

Jul 25 2019

etiotto added a comment to D63459: Loop Cache Analysis.

I addressed all pending review comments, @fhahn @reames does it look ok to you guys now?

Jul 25 2019, 10:35 AM · Restricted Project

Jul 24 2019

etiotto updated the diff for D63459: Loop Cache Analysis.

Addressing review comment from @reames

Jul 24 2019, 2:46 PM · Restricted Project
etiotto added inline comments to D63459: Loop Cache Analysis.
Jul 24 2019, 2:46 PM · Restricted Project
etiotto updated the diff for D63459: Loop Cache Analysis.
Jul 24 2019, 9:42 AM · Restricted Project
etiotto added inline comments to D63459: Loop Cache Analysis.
Jul 24 2019, 9:39 AM · Restricted Project
etiotto updated the diff for D63459: Loop Cache Analysis.

Address remaining comments from @fhahn

Jul 24 2019, 6:44 AM · Restricted Project
etiotto added a comment to D63459: Loop Cache Analysis.

I would like to take another look, but do not want to block this for too long. Please feel free to commit if you don't hear from me by Monday.

Jul 24 2019, 6:41 AM · Restricted Project
etiotto updated the diff for D63459: Loop Cache Analysis.

Addressing code review comments given by @Meinersbur and @fhahn.

Jul 24 2019, 6:34 AM · Restricted Project

Jul 16 2019

etiotto added a comment to D63459: Loop Cache Analysis.

@fhahn @Meinersbur do you have further comments? If not can this be approved?

Jul 16 2019, 5:41 AM · Restricted Project
etiotto added a reviewer for D63459: Loop Cache Analysis: fhahn.
Jul 16 2019, 5:33 AM · Restricted Project

Jul 9 2019

etiotto added a comment to D63459: Loop Cache Analysis.

Note: Because I removed the getLoops static function in the last path older comments in LoopCacheAnalysis.cpp are unfortunately no longer attached to the correct line :-(

Jul 9 2019, 4:23 PM · Restricted Project
etiotto updated the diff for D63459: Loop Cache Analysis.

Addressed suggestions from @fhahn and dropped the pass as an analysis. Instead I provided a static member function in the CacheCost class to compute the cache cost of a nest rooted by a given loop.

Jul 9 2019, 4:18 PM · Restricted Project
etiotto added inline comments to D63459: Loop Cache Analysis.
Jul 9 2019, 4:17 PM · Restricted Project
etiotto abandoned D64359: [LOOPINFO] Add member function to retrieve loops in breadth-first order.

I can use breadth_first from ADT/BreadthFirstIterator.h to collect the loops in breadth-first order. Arguably the getLoopsInPreorder() member functions could also be removed in favor of using ADT/DepthFirstIterator.h (need to confirm whether that does a preorder traversal).

Jul 9 2019, 9:51 AM · Restricted Project
etiotto updated the diff for D63459: Loop Cache Analysis.

Addressed Michael Kruse comments.

Jul 9 2019, 8:11 AM · Restricted Project
etiotto added inline comments to D63459: Loop Cache Analysis.
Jul 9 2019, 8:05 AM · Restricted Project

Jul 8 2019

etiotto added reviewers for D64359: [LOOPINFO] Add member function to retrieve loops in breadth-first order: fhahn, hfinkel.
Jul 8 2019, 12:03 PM · Restricted Project
etiotto created D64359: [LOOPINFO] Add member function to retrieve loops in breadth-first order.
Jul 8 2019, 12:03 PM · Restricted Project

Jul 4 2019

etiotto added a comment to D63459: Loop Cache Analysis.

ping

Jul 4 2019, 7:09 AM · Restricted Project

Jul 3 2019

etiotto added a comment to D63885: [LOOPINFO] Introduce the loop guard API. .

Strengthen the definition of loop guard by disallowing non safe instructions guarded by the branch but not in the loop.

Jul 3 2019, 6:50 AM · Restricted Project

Jun 29 2019

etiotto added a comment to D63885: [LOOPINFO] Introduce the loop guard API. .

@reames Thanks for the review! I agree that there are still much more to consider for how we want to define a loop guard, to make the most use of it.

What's others opinion on disallow instructions with side effects in between the loop guard block and the loop header?

Jun 29 2019, 5:54 AM · Restricted Project
etiotto added a comment to D63885: [LOOPINFO] Introduce the loop guard API. .
Jun 29 2019, 5:51 AM · Restricted Project