search for: mssa

Displaying 20 results from an estimated 23 matches for "mssa".

Did you mean: mesa
2016 Apr 11
2
[LICM][MemorySSA] Converting LICM pass to use MemorySSA to avoid AliasSet collapse issue
Hi All, I'm looking into converting LICM to use MemorySSA instead of AliasSets to determine when it is safe to hoist/sink/promote loads and stores to get around the issue of alias set collapse (see discussion [1]). I have a prototype implementation, but have run into two issues that I could use input from the designers of MemorySSA to resolve: 1) Is MemorySSA intended to be
2020 Aug 18
3
[RFC] Switching to MemorySSA-backed Dead Store Elimination (aka cross-bb DSE)
> On Aug 18, 2020, at 16:59, Michael Kruse <llvmdev at meinersbur.de> wrote: > > Thanks for all the work. The reductions in stores look promising. Do you also have performance numbers how much this improves the execution time? Did you observe any regressions where MSSA resulted in fewer removed stores? I did not gather numbers for execution time yet, but I’ll try to share some tomorrow. At the current state, for MultiSource/SPEC2000/SPEC2006, there are the following regressions test-suite...6/471.omnetpp/471.omnetpp.test 321.00 316.00 -1.6% test-...
2017 Feb 17
2
[MemorySSA] inserting or removing memory instructions
In particular, if you want to add support, the right way to know what to rename is (off the top of my head) add a flag or something to have renamepass reset all uses it sees (you only have to change the uses, defs are all linked together and thus already fixed by the updater). Right now it only does that if they have no defining access. Make it skip blocks already in the visited set (the
2016 May 02
2
[MemorySSA] Potential CachingMemorySSAWalker bug
...thing is that is doesn't seem to be the first > call to getClobberingMemoryAccess after the removal that > causes the corruption, but rather the second. You'll > notice that I added calls to getClobberingMemoryAccess > when doing MSSA.dump(), which is what I'm using to attempt > to figure out when the cache gets corrupted. > > Hopefully this is enough information to debug the > problem. If not perhaps we can look at getting my > EarlyCSE changes checked in in a...
2016 Oct 30
0
[PATCH] D26127: [MemorySSA] Repair AccessList invariants after insertion of new MemoryUseOrDef.
...where. >> If you wish to *replace* an existing access, the normal way is: >> >> > As my original post indicates, I wish to insert an access, not replace > anything. I've inserted a new memory instruction (memmove, memcpy, or > memset), into the IR and wish to keep the MSSA tree synchronized. > This, in general, is not possible right now. See below. > > >> MemoryAccess *Def = OldMemAcc->getDefiningAccess(); >> NewMemAcc = >> MSSA->createMemoryAccessAfter(Repl, Def, >> OldMemAccess->getM...
2016 Apr 20
2
[LICM][MemorySSA] Converting LICM pass to use MemorySSA to avoid AliasSet collapse issue
...review over here: http://reviews.llvm.org/D18090 a load hoist will look something like this to update: // We also hoist operands of loads using this function, so check to see if // this is really a memory access before we try to update MemorySSA for it. MemoryAccess *HoistCandAccess = MSSA->getMemoryAccess(HoistCand); if (HoistCandAccess) { MemoryUseOrDef *MUD = cast<MemoryUseOrDef>(HoistCandAccess); // What is happening here is that we are creating the hoisted access // and destroying the old accesses. MSSA->createMemoryAccess(HoistedInst, MUD->...
2017 Jan 31
0
[cfe-dev] RFC: Emitting empty invariant group for vtable loads
...switch2(50); > std::cout << b.a2.x << std::endl; b.switch2(51); std::cout << b.a2.x > << std::end; // This is not 50, as we would thought based on > invariant.groups } > > > I am not familiar with the TBAA implementation, but after digging more > int MSSA, I have other reason to not like the sub groups. > It might be pretty hard to handle them efficiently in many algorithms > including MSSA. I don't see why. TBAA is handled just fine (including in MSSA); it is just a more-complicated pair-compatibility rule. > > Hal, what are the...
2020 Aug 19
2
[RFC] Switching to MemorySSA-backed Dead Store Elimination (aka cross-bb DSE)
...e that the regressions introduced by this flag flip can be undone by further using MemorySSA in the other passes currently using MemDepAnalysis, and offsetting the cost of computing MemorySSA in the first place. The threshold could be raised again to enable more stores eliminated once the MemCpyOpt+MSSA and NewGVN become the default. If reducing the thresholds is not possible or removes most of the run time benefits, I would vote for enabling as is. Best, Alina On Wed, Aug 19, 2020 at 7:37 AM Florian Hahn via llvm-dev < llvm-dev at lists.llvm.org> wrote: > > > > On Aug 18, 20...
2017 Jan 28
2
[cfe-dev] RFC: Emitting empty invariant group for vtable loads
...t;< std::endl; b.switch2(50); std::cout << b.a2.x << std::endl; b.switch2(51); std::cout << b.a2.x << std::end; // This is not 50, as we would thought based on invariant.groups } I am not familiar with the TBAA implementation, but after digging more int MSSA, I have other reason to not like the sub groups. It might be pretty hard to handle them efficiently in many algorithms including MSSA. Hal, what are the things that you dislike about the emitting barriers everywhere for unions? It only seems to be very heavy, but I am pretty sure we can get to the...
2016 Oct 31
1
[PATCH] D26127: [MemorySSA] Repair AccessList invariants after insertion of new MemoryUseOrDef.
On Sun, Oct 30, 2016 at 5:03 PM, Bryant Wong < 3.14472+reviews.llvm.org at gmail.com> wrote: > To give this a bit of context, this patch stems from issues that I've > encountered while porting MemCpyOpt to MSSA. > Okay. I'm not sure i would try to port instead of just rewrite. The whole goal of MemorySSA is to enable us to write memory optimizations in non-N^2 ways. If you just replace one querying with the other querying, this is not likely to give you this result. It may be faster (or slower)....
2016 May 02
2
[MemorySSA] Potential CachingMemorySSAWalker bug
...veOnEntry)'. The interesting thing is >> that is doesn't seem to be the first call to getClobberingMemoryAccess >> after the removal that causes the corruption, but rather the second. >> You'll notice that I added calls to getClobberingMemoryAccess when doing >> MSSA.dump(), which is what I'm using to attempt to figure out when the >> cache gets corrupted. >> Hopefully this is enough information to debug the problem. If not >> perhaps we can look at getting my EarlyCSE changes checked in in a disabled >> state so you can reproduce t...
2020 Aug 18
7
[RFC] Switching to MemorySSA-backed Dead Store Elimination (aka cross-bb DSE)
...backed DSE can eliminate stores across different basic blocks. This results in large improvements in some benchmarks. Below some numbers for MultiSource/SPEC2000/SPEC2006 on X86 with -O3 -flto: Legacy MSSA Number of dead stores removed across all benchmarks: 17919 26120 ~ +45.76% Total number of stores remaining after DSE: 1424860 1409300 ~ -1.1% Some notable changes (excluding benchmarks with small absolute values of NumFastStores) below. Note that...
2018 Jan 26
1
PM: loop pass depending on the "outer" BPI analysis
...nager? If I did not miss something obvious that already handles these kinds of dependencies then what should be the best way to go? - Add BPI to LoopStandardAnalysisResults?   This makes it a required analysis for all loop passes... - Make it optional in LoopStandardAnalysisResults (similar to MSSA)?   Then how to express the dependency when required? - enhance FunctionToLoopPassAdaptor to allow extra passes being added into smth like LoopCanonicalizationFPM? Please, advise. thanks,   Fedor.
2017 Sep 25
2
Potential infinite loop in MemorySSAUpdater
...od so far if (Op == Phi || Op == Same) continue; // not the same, return the phi since it's not eliminatable by us if (Same) return Phi; Same = cast<MemoryAccess>(Op); } // Never found a non-self reference, the phi is undef if (Same == nullptr) return MSSA->getLiveOnEntryDef(); if (Phi) { Phi->replaceAllUsesWith(Same); removeMemoryAccess(Phi); } // We should only end up recursing in case we replaced something, in which // case, we may have made other Phis trivial. return recursePhi(Same); } In above function what happens whe...
2017 Sep 25
0
Potential infinite loop in MemorySSAUpdater
...the same, return the phi since it's not eliminatable by us > > if (Same) > > return Phi; > > Same = cast<MemoryAccess>(Op); > > } > > // Never found a non-self reference, the phi is undef > > if (Same == nullptr) > > return MSSA->getLiveOnEntryDef(); > > if (Phi) { > > Phi->replaceAllUsesWith(Same); > > removeMemoryAccess(Phi); > > } > > > > // We should only end up recursing in case we replaced something, in > which > > // case, we may have made other Phis...
2016 Aug 03
2
[3.9 Release] Please write release notes!
On 3 August 2016 at 10:46, Renato Golin <renato.golin at linaro.org> wrote: > We certainly do. This is a big deal. I'll write up something and let > Dmitry correct my mistakes. :) Done. > We'll also add the ARM/AArch64 changelogs. Done. :) cheers, --renato
2018 May 10
0
[GSoC] Devirtualization v2
...strip.invariant.group intrinsic, but mostly I spend time debugging some segfaults that happen with -fstrict-vtable-pointers. If you are interested in the topic and would like to help with reviewing patches, please let me know. I am making improvements in multiple components in clang and LLVM (DSA, MSSA, Capture Tracking, intrinsics, InstCombine, Alias Analysis, GVN, LICM), so I will certainly need help from people who are familiar with these. Cheers Piotr -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180...
2017 Sep 23
0
Potential infinite loop in MemorySSAUpdater
On Sat, Sep 23, 2017 at 9:55 AM, Godala, Bhargav-reddy < Bhargav-reddy.Godala at amd.com> wrote: > > With regards > Bhargav Reddy Godala > Software Engineer 2 > Bangalore, India > E-mail: Bhargav-reddy.Godala at amd.com Ext 30678 > > > > On 23-Sep-2017, at 9:27 PM, Daniel Berlin <dberlin at dberlin.org> wrote: > > > > On Sat, Sep 23, 2017 at
2016 Apr 29
2
[MemorySSA] Potential CachingMemorySSAWalker bug
...hanges to '1 = MemoryDef(liveOnEntry)'. The interesting thing is that is doesn't seem to be the first call to getClobberingMemoryAccess after the removal that causes the corruption, but rather the second. You'll notice that I added calls to getClobberingMemoryAccess when doing MSSA.dump(), which is what I'm using to attempt to figure out when the cache gets corrupted. Hopefully this is enough information to debug the problem. If not perhaps we can look at getting my EarlyCSE changes checked in in a disabled state so you can reproduce the problem directly. I'm al...
2020 Nov 16
0
LLVM Weekly - #359, November 16th 2020
...1c](https://reviews.llvm.org/rGa022b1ccd8d). * A new Orc-RPC based TargetProcessControl implementation was added. [1d0676b](https://reviews.llvm.org/rG1d0676b54c4). * The OpenMPIRBuilder gained a CreateCononicalLoop function. [f44ee0f](https://reviews.llvm.org/rGf44ee0f5e7d). * The new `-dot-cfg-mssa` options creates a dot-cfg file visualising MemorySSA information. [45d459e](https://reviews.llvm.org/rG45d459e7522). ## Clang commits * Initial TableGen definitions of syntax nodes were added. [55120f7](https://reviews.llvm.org/rG55120f74ca1), [98aa067](https://reviews.llvm.org/rG98aa067109e)....