Displaying 20 results from an estimated 3000 matches similar to: "[LLVMdev] Get Different Result for ScalarEvolution through ModulePass and FunctionPass"
2015 Sep 10
2
[RFC] New pass: LoopExitValues
Which cases does this pass handle which aren't otherwise optimized out by
passes like GlobalValueNumbering or DeadCodeElimination?
Thanks,
Jake VanAdrighem
On Thu, Sep 10, 2015 at 2:35 PM, Steve King <steve at metrokings.com> wrote:
> Hello LLVM,
> It seems this thread has gone cold. Is there some low risk way for
> the community to take the new pass for a test drive?
>
2015 Sep 03
2
[RFC] New pass: LoopExitValues
On Wed, Sep 2, 2015 at 5:36 AM, James Molloy <james at jamesmolloy.co.uk> wrote:
> Hi,
>
> Coremark really isn't a good enough test - have you run the LLVM test suite
> with this patch, and what were the performance differences?
For the test suite single source benches, the 235 tests improved
performance, 2 regressed and 705 were unchanged. That seems very
optimistic.
2014 Nov 10
2
[LLVMdev] External names for LTO in gold plugin
Hi,
In my work applying -flto to Chrome, I need to set some names to be skipped
by the InternalizePass; otherwise, the linking stage fails (i.e., when
building the chrome binary). In the past, I had a tiny patch that I hadn't
submitted to LLVM: it was something like:
Index: Internalize.cpp
===================================================================
--- Internalize.cpp (revision
2014 Feb 19
2
[LLVMdev] better code for IV
Hi Andrew,
The issue below refers to LSR, so I'll appreciate your feedback. It also refers to instruction combining and might impact backends other than X86, so if you know of others that might be interested you are more than welcome to add them.
Thanks, Anat
_____________________________________________
From: Shemer, Anat
Sent: Tuesday, February 18, 2014 15:07
To: 'llvmdev at
2017 Aug 08
2
[ScalarEvolution][SCEV] no-wrap flags dependent on order of getSCEV() calls
On 8/8/2017 1:37 PM, Friedman, Eli wrote:
> On 8/8/2017 10:22 AM, Geoff Berry via llvm-dev wrote:
>> Hi all,
>>
>> I'm looking into resolving a FIXME in the LoopDataPrefetch (and FalkorMarkStridedAccesses) pass by marking both of these passes as preserving the ScalarEvolution analysis. Unfortunately, when this change is made, LSR will generate different code. One of the
2015 Aug 18
2
RFC for a design change in LoopStrengthReduce / ScalarEvolution
> Of course, and the point is that, for example, on x86_64, the zext here is free. I'm still trying to understand the problem...
>
> In the example you provided in your previous e-mail, we choose the solution:
>
> `GEP @Global, zext(V)` -> `GEP (@Global + zext VStart), {i64 0,+,1}`
> `V` -> `trunc({i64 0,+,1}) + VStart`
>
> instead of the actually-better
2017 Aug 08
2
[ScalarEvolution][SCEV] no-wrap flags dependent on order of getSCEV() calls
Hi all,
I'm looking into resolving a FIXME in the LoopDataPrefetch (and
FalkorMarkStridedAccesses) pass by marking both of these passes as
preserving the ScalarEvolution analysis. Unfortunately, when this
change is made, LSR will generate different code. One of the root
causes seems to be that SCEV will return different nsw/nuw flags for the
same Value, depending on what order the
2015 Aug 17
2
RFC for a design change in LoopStrengthReduce / ScalarEvolution
This is related to an issue in loop strength reduction [1] that I've
been trying to fix on and off for a while. [1] has a more detailed
description of the issue and an example, but briefly put, I want LSR
to consider formulae that have "Zext T" as base and/or scale
registers, and to appropriately rate such formulae.
My first attempt[2] at fixing this was buggy and had to be
2019 Jun 05
2
Strange behaviour of post-legalising optimisations(?)
I come across a situation that I am having a hard time to understand.
When I compile the following code :
char *tst( char *dest, const char *src, unsigned int len )
{
for (int i=0 ; i<len ; i++) {
dest[i] = src[i];
}
return dest;
}
Clang generates this for the ‘for’ body:
for.body: ; preds = %for.cond
%arrayidx = getelementptr inbounds i8,
2015 Aug 17
4
RFC for a design change in LoopStrengthReduce / ScalarEvolution
> I don't understand why you want to factor out the information,
> exactly. It seems like what you need is a function like:
>
> unsigned getMinLeadingZeros(const SCEV *);
>
> then, if you want to get the non-extended expression, you can just
> apply an appropriate truncation. I assume, however, that I'm missing
> something.
The problem is not about how to codegen
2015 Aug 17
2
RFC for a design change in LoopStrengthReduce / ScalarEvolution
> To back up for a second, how much of this is self-inflicted damage?
> IndVarSimplify likes to preemptively widen induction variables. Is
> that why you have the extensions here in the first place?
In the specific example I was talking about the zext came from our
frontend (our FE used to insert these extensions for reasons that are
no longer relevant). But you can easily get the same
2000 Jan 19
1
Potentially serious (but rare) issue with buffer.c and cipher.c
While rototilling packet.c, I did some looking at cipher_encrypt in
cipher.c. It ends up that for SSH_CIPHER_NONE in cipher_encrypt, it
uses memcpy. However, it also appears that dest and src can be equal
in cipher_encrypt.
On most sane libc implementations, memcpy == memmove. However, ANSI C
makes no such guarantee, and some implementations out there are bound
to try to optimize memcpy
2009 Feb 10
2
Mixed ANCOVA with between-Ss covariate?
Hi all,
I have data from an experiment with 3 independent variables, 2 are
within and 1 is between. In addition to the dependent variable, I have
a covariate that is a single measure per subject. Below I provide an
example generated data set and my approach to implementing the ANCOVA.
However the output confuses me; why does the covariate only appear in
the first strata? Presumably it should
2009 Jun 24
0
[LLVMdev] Handling SMax(N, N - constInt) in Scalar Evolution pass
Mai, Haohui wrote:
> Hi all,
>
> I'm working on a project which tries to prove an access to an array is
> safe. For example,
>
> int foo(int s) {
> int * p = malloc(s * sizeof int);
> ...
> int q = p[s - 2];
> }
>
> then the access of p[s - 2] always stays in bound.
>
> I implemented a prototype using the Scalar Evolution pass. Here are the
2009 Aug 19
2
lmer with random slopes for 2 or more first-level factors?
I have data from a design in which items are completely nested within
subjects. Subject is the only second-level factor, but I have
multiple first-level factors (IVs). Say there are 2 such independent
variables that I am interested in. What is the proper syntax to fit a
mixed-effects model with a by-subject random intercept, and by-subject
random slopes for both the 2 IVs?
I can
2018 Aug 11
3
ScalarEvolution in a ModulePass
Hey LLVMDev,
I'm working on a ModulePass that uses ScalarEvolution along with several
other analyses. After some debugging, it looks to me like
ScalarEvolutionWrapperPass does not handle memory correctly for this case.
Here's my current understanding of the problem.
ScalarEvolutionWrapperPass maintains a unique_ptr to a ScalarEvolution.
Calling getSE() dereferences this pointer.
2009 Jun 24
0
[LLVMdev] Handling SMax(N, N - constInt) in Scalar Evolution pass
Nick,
It might be a little bit difficult to handle SMax correctly. But is it
possible to reduce A+(-A) to 0 in SAddExpr?
Haohui
On Wed, 2009-06-24 at 01:05 -0500, Mai, Haohui wrote:
> On Tue, 2009-06-23 at 22:55 -0700, Nick Lewycky wrote:
> > Mai, Haohui wrote:
> > > Hi all,
> > >
> > > I'm working on a project which tries to prove an access to an array
2009 Jun 24
1
[LLVMdev] Handling SMax(N, N - constInt) in Scalar Evolution pass
Mai, Haohui wrote:
> Nick,
>
> It might be a little bit difficult to handle SMax correctly. But is it
> possible to reduce A+(-A) to 0 in SAddExpr?
Yes, it should already do that. Here's a quick test I wrote up:
$ cat x.ll
define i8 @test(i8 %x) {
%neg = sub i8 0, %x
%sum = add i8 %x, %neg
ret i8 %sum
}
$ llvm-as < x.ll | opt -analyze
2009 Jun 24
2
[LLVMdev] Handling SMax(N, N - constInt) in Scalar Evolution pass
On Tue, 2009-06-23 at 22:55 -0700, Nick Lewycky wrote:
> Mai, Haohui wrote:
> > Hi all,
> >
> > I'm working on a project which tries to prove an access to an array is
> > safe. For example,
> >
> > int foo(int s) {
> > int * p = malloc(s * sizeof int);
> > ...
> > int q = p[s - 2];
> > }
> >
> > then the access
2017 Nov 28
2
RFC: [GlobalISel] Towards a generic MI combiner framework
Thanks for the suggestions Vedant. Synthetic debug info is an interesting idea that sounds worthwhile. Could this be implemented as a “wrapper” pass that automatically decorates debug info before and after a specific pass run in opt (or pipeline of passes)? It might be useful to be able to easily enable this for a wide range of tests without having to manually modify each run line, perhaps as an