search for: souper

Displaying 20 results from an estimated 24 matches for "souper".

2015 Sep 01
3
anyone want to help tune up computeKnownBits()?
While looking at optimizations where Souper exploits known bits, I realized that it would be easy to teach Souper to compute known bits. Comparing its results against computeKnownBits() from r246393, it looks like there are some easy (and some not-easy) opportunities for improvement, please see a few examples below. The expressions come...
2014 Nov 25
3
[LLVMdev] new set of superoptimizer results
...e we do lots of provably unnecessary alignment checks. :) On Tue, Nov 25, 2014 at 9:03 AM, John Regehr <regehr at cs.utah.edu> wrote: > Actually, let me save you some time by pointing out the thing that is > perhaps immediately useful about our recent work, which is the fact that > Souper now supports "optimization profiling". > > If you build an LLVM using Souper and then use that LLVM to build SPEC CPU > 2006, here are optimizations ranked by dynamic profile count: > > http://blog.regehr.org/extra_files/souper-nov-14/bydprofile.html > > In other wo...
2014 Nov 24
2
[LLVMdev] new set of superoptimizer results
I hope there's some useful material in here! http://blog.regehr.org/archives/1192 John
2015 Jul 22
8
[LLVMdev] some superoptimizer results
We (the folks working on Souper) would appreciate any feedback on these IR-level superoptimizer results: http://blog.regehr.org/extra_files/souper-jul-15.html My impression is that while there's clearly plenty of material in here that doesn't want to get implemented in an opt pass, there are a number of gems hidin...
2015 Jul 23
4
[LLVMdev] some superoptimizer results
...d: most of the results in this batch seem to be about exploiting `[zs]ext i1` having cost 1 > in order to replace a select of cost 3. > Could you do a run where select has cost 1 and [zs]ext i1 (and trunc to i1) has cost 2 or 3? I tried this (or something quite similar) earlier and it caused Souper to introduce *a lot* of selects. So the problem is that Souper's preferences become skewed too far in the other direction. How about for the next run I give everything (except maybe div/rem) cost 1? Then the only thing Souper will tell us about is when it can eliminate instructions, whic...
2015 Jul 23
0
[LLVMdev] some superoptimizer results
...be about >> exploiting `[zs]ext i1` having cost 1 >> in order to replace a select of cost 3. >> Could you do a run where select has cost 1 and [zs]ext i1 (and trunc to >> i1) has cost 2 or 3? >> > > I tried this (or something quite similar) earlier and it caused Souper to > introduce *a lot* of selects. So the problem is that Souper's preferences > become skewed too far in the other direction. > Interesting. Do you happen to have some examples laying around? > > How about for the next run I give everything (except maybe div/rem) cost 1? T...
2014 Nov 26
2
[LLVMdev] new set of superoptimizer results
...do that? > > Michael > > > On Tue, Nov 25, 2014 at 9:03 AM, John Regehr <regehr at cs.utah.edu> wrote: > >> Actually, let me save you some time by pointing out the thing that is >> perhaps immediately useful about our recent work, which is the fact that >> Souper now supports "optimization profiling". >> >> If you build an LLVM using Souper and then use that LLVM to build SPEC >> CPU 2006, here are optimizations ranked by dynamic profile count: >> >> http://blog.regehr.org/extra_files/souper-nov-14/bydprofile.html &...
2015 Sep 08
2
UB and known bits
...e the ones below. Do we have a set of rules that clients of known bits need to follow to avoid unsoundness? I remember Nuno and/or David Majnemer saying something about this but I don't have it handy. John %0:i32 = var %1:i32 = lshr %0, 1:i32 %2:i32 = addnw 1:i32, %1 infer %2 known from Souper: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx known from compiler: 0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx llvm is stronger %0:i32 = var (000000000000000xxxxxxxxxxxxxxxxx) %1:i32 = and 65535:i32, %0 %2:i16 = var %3:i32 = zext %2 %4:i32 = mulnw %1, %3 infer %4 known from Souper: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
2014 Sep 09
4
[LLVMdev] poison and select
...am contains no UB and the emitted code returns a poison value. Either there has been a miscompilation or else the LLVM documentation should be changed to make it clear that the select instruction only has a value dependence on the value that is selected. The immediate problem here is that both Souper and Alive are happy for foo() to return 0 instead of 1. Souper actually does this optimization -- legally, of course, according to the reference manual. Anyway this issue seemed tricky enough to bring up here instead of just filing a PR. Thanks, John
2015 Jul 23
0
[LLVMdev] some superoptimizer results
...seem to be about >> exploiting `[zs]ext i1` having cost 1 >> in order to replace a select of cost 3. >> Could you do a run where select has cost 1 and [zs]ext i1 (and trunc >> to i1) has cost 2 or 3? > > I tried this (or something quite similar) earlier and it caused Souper > to introduce *a lot* of selects. So the problem is that Souper's > preferences become skewed too far in the other direction. > > How about for the next run I give everything (except maybe div/rem) > cost 1? Then the only thing Souper will tell us about is when it can >...
2015 Jul 22
3
[LLVMdev] some superoptimizer results
...gt; -- Sean Silva > > > > > > > > > > On Wed, Jul 22, 2015 at 10:15 AM, John Regehr < > regehr at cs.utah.edu <mailto:regehr at cs.utah.edu> > > > wrote: > > > > > > We (the folks working on Souper) would appreciate any feedback on > > these IR-level superoptimizer results: > > > > http://blog.regehr.org/extra_files/souper-jul-15.html > <https://urldefense.proofpoint.com/v2/url?u=http-3A__blog.regehr.org_extra-5Ffiles_souper-2Djul-2D15.html&d=AwMFaQ...
2015 Jul 22
2
[LLVMdev] some superoptimizer results
...ute in 2 cycles while the > latter takes 3. Modern OoO chips do in fact exploit this kind of > thing. > > > -- Sean Silva > > > > > On Wed, Jul 22, 2015 at 10:15 AM, John Regehr < regehr at cs.utah.edu > > wrote: > > > We (the folks working on Souper) would appreciate any feedback on > these IR-level superoptimizer results: > > http://blog.regehr.org/extra_files/souper-jul-15.html > > My impression is that while there's clearly plenty of material in > here that doesn't want to get implemented in an opt pass, there ar...
2014 Sep 12
3
[LLVMdev] poison and select
> Poison is a flawed concept. I proved it was flawed back in 2011 [0] Nice. My colleagues and I will dig through this material and possibly come back with some ideas. We're going to need some sort of semantics for UB in LLVM since otherwise these formal-methods-based tools like Souper and Alive risk not making sense. Thanks, John
2019 Feb 12
2
[cfe-dev] clang in official apt repo built without z3 support
...f z3 in debian is very ancient: > https://tracker.debian.org/pkg/z3 4.4.1-0.4 > > LLVM needs 4.7 or something. > There is a bug report: > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=909494 > > This also affects other LLVM-"affiliated" projects, like alive and souper. > > > Kind regards, > > -- > > Paulo Matos > Roman. > > > _______________________________________________ > > cfe-dev mailing list > > cfe-dev at lists.llvm.org > > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev > _____________________...
2017 Sep 05
5
InstCombine, graph rewriting, Equality saturation
Hello all, I've seen some discussion that InstCombine is "too general" and that llvm should implement a proper graph rewrite mechanism: Link to llvm-dev discussion about this: http://lists.llvm.org/pipermail/llvm-dev/2017-May/113219.html, Link to review where this came up (and I first heard about it): https://reviews.llvm.org/D37195. I wanted to understand what the current issues
2017 Sep 07
2
InstCombine, graph rewriting, Equality saturation
...lists.llvm.org> wrote: > Equality saturation is very cool work and Ross Tate mentioned to me that > he'd be happy to chat with you about this. > > But also, you might take a look at some existing projects in this > general space that are already integrated with LLVM, such as Souper and > Alive. > > InstCombine is pretty cool but developing techniques to build these > things automatically is awesome and on my wish list. There's potential > for improvements in all of: speed, code quality, and correctness. > > While we're on the subject: Are the cano...
2015 Jul 23
3
[LLVMdev] some superoptimizer results
...cal path length is more important > than eliminating instructions. The critical path length is a target-independent lower bound on the > maximum achievable execution speed; the number of instructions is not. Sounds easy enough. I'll give it a try. I've observed many situations where Souper can shorten the critical path but I hadn't really thought about making that into a top-level goal. Thanks, John
2015 Jul 23
0
[LLVMdev] some superoptimizer results
On 07/23/2015 07:24 AM, John Regehr wrote: >> I guess another way to select interesting transformations could be to >> look for sequences where the >> result uses a "subset" of the input instruction sequence. > > Yeah, I had been noticing those subsets too. It sounds like it's > worth a try doing a run that looks only for those. > > One nice thing
2015 Jul 23
3
[LLVMdev] some superoptimizer results
> I guess another way to select interesting transformations could be to look for sequences where the > result uses a "subset" of the input instruction sequence. Yeah, I had been noticing those subsets too. It sounds like it's worth a try doing a run that looks only for those. One nice thing is that if we're just looking for subsets, we will not even give the
2015 Jul 27
0
[LLVMdev] LLVM Weekly - #82, Jul 27th 2015
...rg/gmane.comp.compilers.llvm.devel/88488) for the 2015 LLVM Developers' meeting has now gone out. The submission deadline is August 20th. Registration is also [now open](https://www.eventbrite.com/e/2015-llvm-developers-meeting-tickets-17756357744). John Regehr and his collaborators working on Souper have [shared some initial results from the synthesizing superoptimizer](http://blog.regehr.org/archives/1252). John is very interested in collecting representative IR from frontends other than Clang. There is also some discussion about these results [on the mailing list](http://article.gmane.org/gm...